Julian-Nihon Posté(e) le 17 mai 2013 Posté(e) le 17 mai 2013 Bonjour, J’expérimente, je tâtonne,mais la je trébuche, sans doute sur un simple petit cailloux, mais j'ai beau le chercher, je ne le trouve pas ... Voici la route :;---------------MAIN--------------------------- (defun c:test01 () (setq th 70) (setq epw 35) (setq pw 900) (setq pt1 (getpoint "\nPick start point : ")) (setq pt2 (getpoint "\nPick end point : ")) ; (setq wl (distance pt1 pt2)) ; (setq ang (angle pt1 pt2)) ; (setq pn (fix (+ (/ wl pw) 1))) ;-------------Create Layer for Panels---------- (if (null (tblsearch "LAYER" "005_kpanel")) (entmake (list '(0 . "LAYER") '(100 . "AcDbSymbolTableRecord") '(100 . "AcDbLayerTableRecord") '(70 . 0) (cons 2 "005_kpanel") (cons 6 "Continuous") (cons 62 2) (cons 290 1) (cons 370 18) );_list );_entmake );_if ;------------Make Start Endpost---------------- (setq v1 (list (- (car pt1) epw) (- (cadr pt1) (/ th 2)))) (setq v2 (list (- (car pt1) epw) (+ (cadr pt1) (/ th 2)))) (setq v3 (list (car pt1) (+ (cadr pt1) (/ th 2)))) (setq v4 (list (car pt1) (- (cadr pt1) (/ th 2)))) (entmake (list '(0 . "LWPOLYLINE") '(8 . "005_kpanel") '(90 . 4) '(70 . 1) (cons 10 v1) (cons 10 v2) (cons 10 v3) (cons 10 v4) );_list );_entmake );_defun Resultat : コマンド: TEST01 Pick start point : 0,0 Pick end point : 0,2000 nil Pas de message d'erreur, c'est cool, mais je ne vois pas polyligne ... J'ai essaye de mettre osmode a 0, et j'obtiends ca : コマンド: test01 Pick start point : 0,0 Pick end point : 0,2000 14847 Toujours pas de polyligne ... :unsure: Alors, un coup de main ne serait pas de refus :(
-Olivier- Posté(e) le 17 mai 2013 Posté(e) le 17 mai 2013 Bonjour Julian-Nihon,Tout comme pour la création du calque, il faut que tu ajoute les 2 codes de groupes 100 '(100 . "AcDbEntity") '(100 . "AcDbPolyline")Dans la liste dxf.Bonne journée. PS : J'adore les caractères Japonais dans les résultats d'interprétations. :D
bonuscad Posté(e) le 17 mai 2013 Posté(e) le 17 mai 2013 Bonjour, Depuis l'apparition des sous-classe (code DXF 100), on est obligé de fournir ces classes pour que la liste soit valide pour entmake, il n'y a pas de valeur par defaut. Comme tu l'as fait d'ailleurs pour l'entité LAYER. Donc: (entmake (list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '(8 . "005_kpanel") '(100 . "AcDbPolyline") '(90 . 4) '(70 . 1) (cons 10 v1) (cons 10 v2) (cons 10 v3) (cons 10 v4) );_list );_entmake devrait fonctionner sans problème Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
VDH-Bruno Posté(e) le 17 mai 2013 Posté(e) le 17 mai 2013 Bonjour, Avec des marqueurs de sous classes, cela devrait mieux se passer… (entmake (list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '(8 . "005_kpanel") '(100 . "AcDbPolyline") '(90 . 4) '(70 . 1) (cons 10 v1) (cons 10 v2) (cons 10 v3) (cons 10 v4) );_list );_entmake Apprendre => Prendre => Rendre
VDH-Bruno Posté(e) le 17 mai 2013 Posté(e) le 17 mai 2013 Re, Visible bonuscad a été le plus rapide, bravo à lui. Dans ce cas pour apporter quelque chose au post, je vais essayer de compléter cette histoire de sous classes, avec ce que j’en ai compris par expérimentation. Comme l'a précisé bonuscad depuis leurs apparitions ces définitions sont nécessaires pour les entités qui leurs sont contemporaines cas des polylignes optimisées apparue depuis la version R14. Par contre pour les entités antérieures à l’apparition des sous-classes ces définitions sont facultatives dans les définitions d’entmake (certainement pour des soucis de compatibilité entre application lisp), c’est le cas des entités historique que sont les cercles, arc, lignes ect.. Ceci explique à mon avis qu’une ligne peut être définie comme ceci avec entmake sans marqueur de sous-classe contrairement à la polyligne:(entmake (list '(0 . "LINE") (cons 10 pt1) (cons 11 pt2)) A+ Apprendre => Prendre => Rendre
Patrick_35 Posté(e) le 17 mai 2013 Posté(e) le 17 mai 2013 Salut Et bien, c'est du rapide pour les réponses ;) Je donne quand même ma routine pour créer des polylignes, cela peut aider à comprendre.(defun dessine_poly_patrick(pts coul cal esp / lst ent) (setq ent (mapcar '(lambda(x)(cons 10 x)) pts) ent (append (vl-remove nil (list (cons 0 "LWPOLYLINE") (cons 100 "AcDbEntity") (cons 100 "AcDbPolyline") (cons 70 0) (cons 90 (1+ (length pts))) (cons 6 "BYLAYER") (car coul) (if (cadr coul) (cadr coul) ) (if (caddr coul) (caddr coul) ) (if esp (cons 8 cal) (progn (cons 8 "0") (cons 67 1) (cons 410 cal) ) ) ) ) ent ) ) (entmake ent) ) Exemple(setq Ma_Poly (dessine_poly_patrick '((0.0 0.0 0.0) (1.0 1.0 0.0) (5.0 5.0 0.0)) '((62 . 1) nil nil) "Mon_Calque" T)) pts = liste de points --> Exemple '((0.0 0.0 0.0) (1.0 1.0 0.0) (5.0 5.0 0.0))coul = couleur de la poly --> Exemple '((62 . 1) nil nil) pour la couleur rouge. Les deux nils sont pour les couleurs vraies ou le nom de la couleur (dxf 420/430)cal est pour le nom du calqueesp est pour l'espace objet/papier --> valeur différent de nil --> Espace Papier @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
-Olivier- Posté(e) le 17 mai 2013 Posté(e) le 17 mai 2013 Merci VDH-BRUNO,Merci pour la précision, car en effet je ne comprenais pas pourquoi certaine fois entmake pouvais fonctionner sans ces marqueurs.OlivierPS : Regarde bien, j'avais grillé bonuscad au poteau(sur l'épaisseur de l'écorce) :D
VDH-Bruno Posté(e) le 17 mai 2013 Posté(e) le 17 mai 2013 PS : Regarde bien, j'avais grillé bonuscad au poteau(sur l'épaisseur de l'écorce) :D Effectivement bravo, j'avais pas vu avec prés d'1 minute derrière, j'étais vraiment bon dernier :D :D :D Apprendre => Prendre => Rendre
Julian-Nihon Posté(e) le 17 mai 2013 Auteur Posté(e) le 17 mai 2013 Merci a tout le monde, rapide et efficace :o Et moi, ben, je me coucherais moins bete ce soir ... Meme si le "probleme" est resolu, quelqu'un aurait-il une idee sur que represente ce "nil" et ce "14847" (quand osmode=0) ? PS : J'adore les caractères Japonais dans les résultats d'interprétations. Si tu veux, j'ai aussi les erreurs en japonais, les options en japonais ..... :(rires forts):
bonuscad Posté(e) le 17 mai 2013 Posté(e) le 17 mai 2013 Meme si le "probleme" est resolu, quelqu'un aurait-il une idee sur que represente ce "nil" et ce "14847" (quand osmode=0) ? Difficile de dire comme cela, je pense (mais je peux me tromper) que c'est la valeur d'OSMODE qui est retournée. Quand les accrochages aux objets sont désactivés à l'aide du bouton Accrobj de la barre d'état, le code binaire 16384 (0x4000) est renvoyé, en plus de la valeur normale d'OSMODE. Donc:(- 16384 14847) -> 1537 1537 -> (+ 1024 512 1) 1024 Annule tous les accrochages aux objets.512 PROche1 EXTREmité A mon avis tu avais ces 3 modes d'actif avant d'inactiver l'accroche objet. NB: 1 - Je n'ai pas réussi à reproduire ce que tu décrit. 2 - La définition de ce qui est dit pour la valeur 1024 dans l'aide à propos d'OSMODE correspond (dans les anciennes versions d'Autocad) au mode rapide d'accrochage (le terme "Annule" employé ne me convient pas, à moins que quelque chose m’aie échappé) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
Julian-Nihon Posté(e) le 21 mai 2013 Auteur Posté(e) le 21 mai 2013 Difficile de dire comme cela, je pense (mais je peux me tromper) que c'est la valeur d'OSMODE qui est retournée. Donc:(- 16384 14847) -> 1537 1537 -> (+ 1024 512 1) 1024 Annule tous les accrochages aux objets.512 PROche1 EXTREmité A mon avis tu avais ces 3 modes d'actif avant d'inactiver l'accroche objet. NB: 1 - Je n'ai pas réussi à reproduire ce que tu décrit. 2 - La définition de ce qui est dit pour la valeur 1024 dans l'aide à propos d'OSMODE correspond (dans les anciennes versions d'Autocad) au mode rapide d'accrochage (le terme "Annule" employé ne me convient pas, à moins que quelque chose m’aie échappé) Bonjour, BonusCAD, merci pour ces precisions.En faisant varier les points d'accroche, le résultat change, donc il semblerait que ton raisonnement soit correct ... Bref, il faut que je fasse attention et que je lise la doc :(rires forts):
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant