Aller au contenu

bryce

Membres
  • Compteur de contenus

    2 160
  • Inscription

  • Dernière visite

  • Jours gagnés

    16

Tout ce qui a été posté par bryce

  1. Bonjour, Voici un Lisp qui pourra peut-être faire l'affaire. Les "couples" de blocs sont cherchés dans un fichier texte: - un couple par ligne - sur chaque ligne, le nom du bloc à remplacer et le nom du nouveau bloc, séparés par un point-virgule. Par exemple : ancienbloc;nouveaubloc bloca;blocb Les blocs de remplacement doivent exister dans le dessin, ou sous forme de fichiers dwg dans un chemin de recherche d'AutoCAD. (defun c:SWAPBLOCKS ( / acdoc ms *error* plist sep f l flst i ob nb ss vlnb ) ; Caractère de séparation entre l'ancien bloc et le nouveau dans le fichier texte: (setq sep ";") ; Liste des propriétés de l'ancien bloc à appliquer au bloc de remplacement ; (l'échelle en X, Y et Z et l'angle de rotation sont récupérés d'office): (setq plist '("Layer" "TrueColor" "Linetype" "LinetypeScale" "LineWeight")) (vl-load-com) (setq acdoc (vla-get-activedocument (vlax-get-acad-object)) ms (vla-get-modelspace acdoc)) (defun *error* (msg) (and msg (or (member (strcase msg) '("FUNCTION CANCELLED" "QUIT / EXIT ABORT" "FONCTION ANNULEE" "QUITTER / SORTIR ABANDON")) (princ (strcat "\nErreur : " msg)) ) ) (if ss (setq ss nil)) (vla-endundomark acdoc) (princ) ) (vla-startundomark acdoc) (setq flst '() f (getfiled "" "" "txt" 4)) (if (and f (setq f (open f "r"))) (progn (while (setq l (read-line f)) (setq flst (cons l flst)) ) (close f) (setq flst (reverse flst)) ) ) (foreach l flst (setq i (vl-string-search sep l) ob (substr l 1 i) nb (substr l (+ i 2))) (princ (strcat "\n\nRemplacement de " ob " par " nb ":")) (setq ss (ssget "_X" (list (cons 0 "INSERT")(cons 2 ob)(cons 410 "Model") ))) (if ss (if (or (tblsearch "BLOCK" nb) (setq nb (findfile (strcat nb ".dwg")))) (progn (setq i 0) (repeat (sslength ss) (setq ob (vlax-ename->vla-object (ssname ss i))) (setq vlnb (vla-insertblock ms (vla-get-InsertionPoint ob) nb (vla-get-XScaleFactor ob) (vla-get-YScaleFactor ob) (vla-get-ZScaleFactor ob) (vla-get-Rotation ob))) (foreach p plist (eval (read (strcat "(vla-put-" p " vlnb (vla-get-" p " ob))"))) ) (vla-delete ob) (setq i (+ 1 i)) );repeat (setq ss nil) (princ (strcat "\n" (itoa i) " blocs remplacés.")) );progn (princ (strcat "\nBloc " nb " non trouvé, remplacement non effectué.")) );if (princ (strcat "\nAucun bloc " ob " à remplacer.")) );if ss );foreach (*error* nil) )
  2. Techniquement, c'est assez impressionnant en effet. Par contre qu'est-ce qu'elle est moche ! En la voyant, ça ne m'a pas du tout donné envie de "commencer l'expérience"... :wacko: :P (Désolé pour les malheureux propriétaires de ce modèle...)
  3. bryce

    Substitution de blocs

    C'est une petite erreur de ma part, il faut remplacer cette ligne (princ (strcat "\n" (itoa (+ 1 i)) " blocs substitués.")) par (princ (strcat "\n" (itoa i) " blocs substitués."))
  4. bryce

    Substitution de blocs

    Il suffit de remplacer (ssget "_X" ...) par (ssget ...) ;)
  5. bryce

    Substitution de blocs

    Bonjour, C'est simplement que la sélection est vide (aucun bloc à traiter). Le chiffre en question n'est pas aléatoire, c'est le nombre de références de blocs remplacées dans le dessin. ;) Tu es sûr qu'il ne traite rien ? Si c'est le cas, merci de poster un dessin en exemple. Voici une version légèrement modifiée pour que les messages soient plus clairs. (defun c:FUSBLOCS ( / ss i el bname nbname suff ) (setq ss (ssget "_X" '( (0 . "INSERT")(2 . "*_*") ) )) (if ss (progn (setq i 0) (repeat (sslength ss) (setq el (entget (ssname ss i)) bname (cdr (assoc 2 el)) pos (vl-string-search "_" bname) nbname (substr bname 1 pos) suff (substr bname (+ pos 2))) (if (> (atoi suff) 0) (entmod (subst (cons 2 nbname) (cons 2 bname) el)) ) (setq i (+ 1 i)) ) (princ (strcat "\n" (itoa (+ 1 i)) " blocs substitués.")) ) (princ "\nAucun bloc trouvé.") ) (princ) ) Pour les autres améliorations demandées, je verrai quand j'aurai le temps. ;)
  6. bryce

    ScanDXF Beta

    Beta 5: amélioration de l'export Excel, les 3 onglets sont exportés en une fois dans le même classeur.
  7. bryce

    Substitution de blocs

    Bonjour, Un petit Lisp vite fait: (defun c:FUSBLOCS ( / ss i el bname nbname suff ) (setq ss (ssget "_X" '( (0 . "INSERT")(2 . "*_*") ) )) (setq i 0) (repeat (sslength ss) (setq el (entget (ssname ss i)) bname (cdr (assoc 2 el)) pos (vl-string-search "_" bname) nbname (substr bname 1 pos) suff (substr bname (+ pos 2))) (if (> (atoi suff) 0) (entmod (subst (cons 2 nbname) (cons 2 bname) el)) ) (setq i (+ 1 i)) ) )
  8. Bonjour, Je ne vois pas trop comment aplatir de la 3D sans mettre les Z à 0 ?! :blink: Il faudrait que tu présentes un exemple plus précis du résultat que tu souhaites obtenir, parce que ce n'est pas très clair (pour moi en tout cas)...
  9. bryce

    Jaune et 255,255,0

    Bonjour, Un autre petit Lisp vite fait : (defun c:ACI ( / ss i ent ) (vl-load-com) (setq ss (ssget "_X" '( (-4 . ">=")(420 . 0)))) (setq i 0) (repeat (sslength ss) (setq ent (ssname ss i)) (vla-put-color (vlax-ename->vla-object ent) (cdr (assoc 62 (entget ent)))) (setq i (+ 1 i)) ) )
  10. bryce

    ScanDXF Beta

    Beta 4, prise en compte de la suggestion de Tramber + prise en charge des blocs créés par la commande INSERM.
  11. bryce

    ScanDXF Beta

    Je ne suis pas encore totalement décidé, mais je vais peut-être le laisser en gratuiciel ou partagiciel. Les suggestions sont toujours bienvenues, ensuite j'aviserai... :P
  12. bryce

    ScanDXF Beta

    C'est que tu n'as pas suivi la procédure d'installation décrite dans le 1er message. ;) Regarde dans l'onglet "Infos" de ScanDXF, il y a une commande (setenv "scandxfpath" "...") à copier et à coller dans la ligne de commande d'AutoCAD.
  13. bryce

    ScanDXF Beta

    Bonjour Jeff ;) Merci du retour ! - en tapant (getenv "scandxfpath") dans AutoCAD, quel est le résultat ? - le dossier "temp" existe-t-il bien sur le bureau ?
  14. bryce

    ScanDXF Beta

    Nouvelle version (Beta 2): - support des Faces 3D, avec affichage de l'aire - affichage du nom des couleurs 1 à 7 (au lieu du numéro)
  15. bryce

    ScanDXF Beta

    Un des buts principaux étant de rester compatible avec LT, j'ai peur qu'ObjectDbx ne soit pas une option. Je ne vois pas d'autre issue que de passer par un DXF. La gestion des attributs est prévue, j'hésite encore entre l'intégrer dans ScanDXF, ou créer un autre outil spécialisé sur les blocs. Idéalement, il faudrait aussi pouvoir récupérer les paramètres des blocs dynamiques, mais quand je vois l'usine à gaz simplement pour réussir à récupérer leur nom... :unsure: Je n'avais pas pensé aux INSERM, je vais regarder ça. Pour l'export vers Excel, c'est déjà fait ! ;)
  16. Bonjour, Je vous propose de tester ScanDXF, un outil de mon cru qui permet de compter les blocs d'un dessin et de récupérer les propriétés (calque, longueur, aire) des lignes, polylignes, splines, etc. Avec AutoCAD, ça peut bien sûr être fait sans passer par un programme externe, en Lisp par exemple. Mais ScanDXF permet de le faire même avec une version LT ! Il peut-être utilisé soit directement en "standalone" pour analyser un ficher DXF, soit lancé depuis AutoCAD pour analyser les objets sélectionnés dans le dessin. Le principe est d'utiliser dans AutoCAD une macro qui va exporter les objets en DXF, puis lancer ScanDXF, lequel va analyser les objets décrits dans ce DXF, calculer les longueurs, surfaces, et afficher un rapport. Procédure d'installation : - télécharger le Zip - décompresser le Zip dans un répertoire de votre choix. ScanDXF est maintenant directement utilisable pour analyser un fichier DXF. Pour pouvoir le lancer depuis AutoCAD, quelques étapes supplémentaires sont nécessaires : - lancer ScanDXF.exe et se rendre dans l'onglet Options - copier la commande d'installation pour AutoCAD ou celle pour LT, suivant la version utilisée - lancer AutoCAD ou LT - coller dans la ligne de commande la macro d'installation (puis appuyer sur Entrée si besoin) - créer un bouton dans la boîte de dialogue CUI, avec comme macro la macro de bouton affichée dans l'onglet Infos de ScanDXF OU, plus simple, - charger le menu partiel scandxf.cuix (depuis la boîte de dialogue CUI, ou avec la commande CHARGIUPERSO). Ce menu rajoute à AutoCAD une mini barre d'outils (un seul bouton) pour les vieux :P , et un bouton dans l'onglet Sortie du Ruban pour les djeunz. :P - C'est prêt ! B) Utilisation: - dans AutoCAD, cliquer sur le bouton ScanDXF et sélectionner les objets, valider OU - "gripper"/sélectionner les objets par la méthode de votre choix (clic clic, Sélection rapide, Sélectionner similaire, etc.), puis cliquer sur le bouton ScanDXF. - dans ScanDXF, vous pouvez filtrer les résultats par type d'objet et/ou par calque, trier par colonne... - liste des objets supportés pour l'instant : blocs (y compris dynamiques), polylignes "légères", lignes, cercles, points, arcs, splines, ellipses. NB: la longueur des splines est une valeur approchée, elle diffère légèrement de celle indiquée dans AutoCAD. Résultat : Si vous trouvez des bugs, ou si vous avez des suggestions d'amélioration, je suis tout ouïe ! :) -- Mises à jour -- 29/04/2012: Beta 2 - support des Faces 3D - affichage du nom des couleurs 1 à 7 (au lieu du numéro) 30/04/2012: Beta 3 - correction d'un bug sur le tri des colonnes numériques 30/04/2012: Beta 4 - la liste des types d'objets et celles des calques sont masquées selon l'onglet courant - prise en compte des insertions multiples de blocs (INSERM ou _MINSERT). Attention, dans ScanDXF les coordonnées d'insertion de ces blocs ne sont justes que si les blocs sont dans un plan parallèle au plan XY du SCG. 02/05/2012: Beta 5 amélioration de l'export Excel, les 3 onglets sont exportés en une fois dans le même classeur. 02/06/2012: Beta 6 ajout d'un onglet Calques. 01/07/2012: Beta 7 - affichage des attributs dans la vue détaillée des blocs - réécriture complète en POO du parser dxf. 12/07/2012: Beta 8 -ajout d'une colonne affichant la largeur globale des polylignes. 02/08/2012: Beta 9 - correction d'un bug sur l'affichage du nom des blocs dynamiques - amélioration du redimensionnement des colonnes (dans l'onglet Entités seulement pour le moment) - possibilité de choisir les colonnes à afficher (dans l'onglet Entités seulement pour le moment) - ajout d'un bouton pour répartir la largeur des colonnes (dans l'onglet Entités seulement pour le moment) 29/08/2012: Beta 10 - amélioration du redimensionnement des colonnes dans tous les onglets - possibilité de choisir les colonnes à afficher dans tous les onglets - bouton pour répartir la largeur des colonnes présent dans tous les onglets - affichage du texte et du style de texte - correction d'un bug qui affichait l'aire de certaines polylignes en négatif - l'aire des polylignes et splines n'est affichée que si elles ne comportent aucune autointersection (dans les versions précédentes, une valeur fausse était affichée) - amélioration des performances. 11/09/2012: Beta 11 - gestion des colonnes dans l'onglet Calques identique aux autres onglets - export automatique des résultats au format csv dans le dossier "export" en utilisant le commutateur -x - ajout d'un bouton pour l'export auto dans la barre d'outils et le groupe de fonctions AutoCAD - les dimensions de la fenêtre sont mémorisées d'une session à l'autre + ajout d'une option dans l'onglet Infos pour réinitialiser les préférences. 09/10/2012: Beta 12 - correction d'un bug lors de l'export en CSV de textes multilignes contenant des sauts de ligne - correction d'un bug : dernière rangée de l'onglet Entités manquante lors de l'export en CSV/Excel - les coordonnées X, Y et Z des textes correspondent au point d'alignement (point de justification) au lieu du point d'insertion - ajout d'une colonne pour le facteur de largeur des textes. 18/10/2012: Beta 13 - prise en charge des états de visibilité des blocs dynamiques (expérimental, à tester) - ajout d'un bouton pour l'export au format CSV. 01/12/2012: Beta 14 - support des multilignes - utilisation automatique du séparateur décimal défini dans Excel lors de l'export vers Excel - correction d'un bug sur la gestion des colonnes. 09/04/2013: Beta 15 - correction d'un bug lors de la restauration de la taille de la fenêtre. 26/04/2013: Beta 16 - correction d'un bug provoquant un crash lors du calcul de l'aire des Faces 3D. 27/06/2013: Beta 17 - tri par ordre alphabétique des filtres de calques, blocs, types d'entités - date d'expiration repoussée au 31/07/2013. 14/01/2014: Beta 18 - correction d'un bug sur les sommes lorsque le séparateur décimal système est la virgule - date d'expiration repoussée au 31/03/2014. 29/04/2014: Beta 19 - correction d'un bug (coordonnées des entités point non affichées) - date d'expiration repoussée au 31/07/2014. 02/03/2015: Beta 20 - correction d'un bug (longueurs des arcs non affichées) - ajout d'une colonne affichant le rayon des arcs et cercles - date d'expiration repoussée au 30/04/2014. 10/03/2015: Beta 21 - onglet Infos renommé en Options - les boutons d'export ne sont plus affichés dans l'onglet Options - ajout d'une option pour changer l'extension des fichiers exportés en txt (dans l'onglet Options). 03/07/2015: Beta 22 - correction d'un bug lors de l'export Excel (fichier vide s'il n'y a qu'un objet à exporter) - ajout de la propriété Fermé pour les ellipses - si un fichier nommé autorun.bat se trouve dans le même répertoire que scandxf.exe, il sera automatiquement executé en fin de traitement (uniquement si ScanDXF est lancé en mode silencieux via autoscandxf.bat) - date d'expiration repoussée au 31/12/2015. 19/12/2015: Beta 23 - prise en charge des polylignes 3D et polylignes 2D "lourdes" - ajout des coordonnées XYZ des extrémités de lignes dans les propriétés récupérées - date d'expiration repoussée au 31/03/2016. 29/01/2016: Beta 24 - correction d'un bug lors de l'export CSV (fichier vide s'il n'y a qu'un objet à exporter) - possibilité d'utiliser l'argument "-txt" ou "-csv" dans autoscandxf.bat pour forcer le format d'export auto - le dossier de destination est ouvert automatiquement lors d'un export CSV depuis l'interface graphique. 01/02/2016: Beta 25 - lors d'un export auto, un fichier de configuration (ent_properties.cfg) permet de choisir les propriétés à extraire et leur ordre. 08/10/2016: Beta 26 - correction d'un bug provoquant un crash en cas de présence d'un bloc anonyme. 07/12/2016: Beta 27 - le nombre de colonnes de propriétés est limité à 64 pour éviter un crash (limite de RealBasic/Xojo). 20/01/2017: Beta 28 - ajout d'un message signalant la fin du traitement lors d'un export auto  - ajout des arguments -skipEntities (ne traite que les calques) et -silent (supprime le message de fin lors d'un export auto). 30/05/2017: Beta 29 - ajout d'un onglet listant les présentations - ajout de l'argument -layersOnly pour traiter uniquement les calques - ajout de l'argument -layoutsOnly pour traiter uniquement les présentations - l'argument -skipEntities traite les calques et les présentations. 04/07/2017: Beta 30 - toutes les coordonnées sont maintenant exprimées dans le SCG (implémentation de l'algorithme d'axe arbitraire) - calcul des longueurs et aires des arcs d'ellipse. 10/10/2017: Beta 31 - ajout d'une colonne affichant l'ordre des présentations. 12/11/2017: Beta 32 - les sommets en doublon dans les polylignes sont ignorés, ce qui permet d'en calculer l'aire - les polylignes dont les extrémités sont confondues sont considérées comme fermées.
  17. Bonjour, Sans doute VISRETAIN (à mettre à 1)... ;)
  18. bryce

    [résolu] dwg trueview buggé

    C'est peut-être défini dans les paramètres de l'imprimante elle-même ? Il faudrait peut-être vérifier que ta table Monochrome transforme bien TOUTES les couleurs en noir. Elle a peut-être été bidouillée ? N'hésite pas à poster un dessin en exemple si tu ne trouves pas le problème. ;)
  19. bryce

    [résolu] dwg trueview buggé

    Bonjour, Dans AutoCAD, les tables de styles de tracé n'agissent QUE sur les 255 couleurs indexées. ;) Si dans le dessin des objets ont des couleurs RVB, ils s'imprimeront toujours en couleur.
  20. bryce

    SHORCUTMENU

    Cette variable correspond aux réglages dans les Options > onglet Préférences utilisateur > Signification du bouton droit... En ce qui me concerne, les réglages par défaut me conviennent, de toutes façons je n'utilise pas beaucoup le clic droit (beaucoup moins que la barre d'espace). C'est purement une préférence personnelle, à toi de voir. ;)
  21. bryce

    SHORCUTMENU

    Bonjour, 11 = 1+2+8 27 = 1+2+8+16 ;)
  22. Bonjour, *^C^C_lengthen;\;-texte;auc;@;;;Longueur=$m=$(rtos,$(getvar,perimeter),2,2);deplacer;d;;auc;@;auc; ;) Dans ton essai, tu utilises userr1. Tu voulais faire un cumul des longueurs ? :unsure:
  23. bryce

    Redéfinition de bloc

    Bonjour, Dans rdc.dwg, tu sélectionnes un bloc porte, et tu tapes la commande WBLOC. Dans la boîte de dialogue, tu choisis l'emplacement du fichier (en gardant comme nom de fichier le nom du bloc). Dans r+1.dwg, tu utilises la commande Insérer bloc > Parcourir..., tu cherches le fichier créé précédemment, puis OK. Quand il te demande si tu veux redéfinir le bloc, tu réponds oui, puis Echap si tu n'as pas besoin d'insérer une nouvelle porte. ;)
  24. bryce

    sélections...

    Il y a quand même pas mal d'infos dans l'aide pour les notions de base, ou sur des sites comme Afralisp (que je te conseille, si tu comprends l'anglais). Je ne vais donc pas faire un cours sur le Lisp (du moins ce que j'en connais), juste répondre à quelques unes de tes questions sur (ssget). (setq ss (ssget)) va te demander de faire une sélection, et la stocker dans la variable ss. Mais ssget accepte un certain nombre d'options comme _X, ou _A, etc. Par exemple: (ssget "_X") sélectionne d'office tous les objets du dessin (y compris sur des calques gelés ou verrouillés), alors que (ssget "_A") sélectionne tous les objets du dessin qui ne sont pas sur des calques gelés. ssget accepte également une liste de filtres permettant de filtrer les objets sélectionnés en fonction de leurs codes DXF (par exemple le code 0 qui correspond au type d'objet, ou le code 410 qui correspond à l'onglet dans lequel se trouve l'objet). Donc (ssget "_A" '( (0 . "LINE") ) ) sélectionne toutes les lignes du dessin qui ne sont pas sur des calques gelés. Si plusieurs filtres sont utilisés, l'objet doit correspondre à tous ces critères pour être sélectionné (opérateur ET implicite). Par exemple (ssget "_A" '( (0 . "LINE")(410 . "Model") ) sélectionne toutes les lignes du dessin qui ne sont pas sur des calques gelés ET qui se trouvent dans l'onglet Objet. On peut aussi utiliser des caractères génériques comme *, ~, etc. Par exemple (ssget "_X" '( (0 . "*LINE,CIRCLE") ) ) sélectionne tous les objets du dessin dont le type est CIRCLE OU se termine par LINE (càd POLYLINE, LINE, LWPOLYLINE, XLINE). Entre parenthèses, une LWPOLYLINE est ce que j'appelle une polyligne "légère". Elles sont apparues dans la R14, en remplacement des polylignes 2D "lourdes" qui existaient auparavant. Et pour des sélections encore plus sophistiquées, ssget permet également d'utiliser des opérateurs (AND, OR, >, <, etc.) dans les filtres, à l'aide du code -4. Par exemple (ssget "_X" '( (0 . "LINE")(-4 . "<OR")(8 . "toto")(8. "test")(-4 . "OR>") ) ) sélectionne toutes les objets qui: - sont des lignes ET - dont le calque (code DXF 8) est toto OU test. Tu peux voir les codes DXF d'un objet de ton dessin en tapant (entget(car(entsel))) dans la ligne de commande, puis en cliquant sur l'objet (appuyer sur F2 si besoin pour voir toute la liste). ;)
  25. Bonjour, Tu peux créer des propriétés personnalisées dans les propriétés du dessin, puis utiliser des champs pour les afficher dans tes présentations. ;)
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité