Aller au contenu

Creation polyligne double parametrée


lulu3109

Messages recommandés

Bonjour

 

 

Dans mon travail je cré des polylignes puis je les copie pour les affecter dans un calque différent puis leurs affecter une largeur et une couleur différente ce qui permet de mettre les mettre évidence.

Je cherche a automatiser le soulignement de polyligne par un bouton LISP.

 

Ce bouton permettra de créer avec une seule action la ligne et son soulignement comme réalisé manuellement.

 

Peut ont créer d'un seul coup deux polyligne associatives?

Comment affecter directement en lisp largeur calque et couleur a la création de polyligne?

 

la difficulté est que la polyligne maitre doit être reconnu comme tel pour diverses applicatif.

 

Pouvez vous m'aider dans mon projet?

Lien vers le commentaire
Partager sur d’autres sites

  • 1 mois après...

Bonjour

 

voici le bout de code que j'ai réussi a écrire.

 

(defun c:clinex ( / REP DC)   
(if (not (tblsearch "layer" "Ligne1"))
 (command "-calque" "n" "Ligne1" "")
)
(if (not (tblsearch "layer" "Ligne2"))
 (command "-calque" "n" "Ligne2" "")
)
   	(command "_.pline" pause "_width" 0.001 0.001)
   	(while (not (zerop (getvar "CMDACTIVE")))
           	(command pause)
)
(command "_.chprop" (entlast) "" "_layer" "Ligne1" "")
(command "-COPIERVERSCALQUE" (entlast) "" "Ligne" "quitter" "")
(command "_.chprop" (entlast) "" "COULEUR" "2" "")
(command "_.pedit" (entlast) "" "largeur" "0.4" "" "")
(command "ordretrace" (entlast) "" "arrière" "") 

 

Le problème ce situe au niveau de la largeur de la polyligne.

Quelqu'un a une idée pour me débloquer?

Lien vers le commentaire
Partager sur d’autres sites

(defun c:cadxp ( / REP DC)
       (setvar "OSMODE" 6)

       (if (not (tblsearch "LAYER" "Ligne1"))
               (command "_.layer" "_new" "Ligne1" "")
       )
       (if (not (tblsearch "LAYER" "Ligne2"))
               (command "_.layer" "_new" "Ligne2" "")
       )
                       
       (prin1 "\nCliquer le parcour de votre Polyligne <Taper (Return) pour FIN>")
       (command "_.pline" pause "_width" 0.02 0.02) ;LARGEUR DE POLYLIGNE
       (while (not (zerop (getvar "CMDACTIVE")))
               (command pause)
       )

 (command "_.chprop" (entlast) "" "_layer" "Ligne1" "")
                       (setq DC 0.25) ; DISTANCE DE DECALAGE
       (command "_.offset" DC (entlast) pause "")
       (command "_.chprop" (entlast) "" "_layer" "Ligne2" "")
       (prin1)	 	
       
 (setvar "PLINEWID" 0)

)

 

Essaye sa

“L'environnement est important, pour sauver un arbre, mangez un castor !”

Lien vers le commentaire
Partager sur d’autres sites

salut red

 

Je ne cherche pas a décaler. les deux polyligne doivent être les mème sauf que la polyligne coloré doit être plus large que la polyligne maitre.

 

le bout de code que j'ai fait le boulot sauf pour la largeur.

Habituellement j’utilise manuellement les propriétés ou bien la fonction pedit pour affecter une largeur.

 

existe il une fonction LISP pour affecter une largeur a une polyligne déjà crée?

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Tu n'étais pas loin.

Il ne faut pas hésiter à tester une expression (command ...) en changeant les paramètres en fonction de ce que renvoie la ligne de commande.

 

(command "_.pedit" (entlast) "_width" 0.4 "")

 

Après, une façon plus "programmation" serait de modifier la polyligne via ses propriétés :

 

avec AutoLISP et les données DXF

(setq elst (entget (entlast))) ; liste des données dxf de la dernière entité
(entmod (subst '(43 . 0.4) (assoc 43 elst) elst))

avec setpropertyvalue (AutoCAD 2012 et +)

(setpropertyvalue (entlast) "ConstantWidth" 0.4)

avec "Visual LISP" (COM/ActiveX)

(vla-put-ConstantWidth (vlax-ename->vla-object (entlast)) 0.4)

Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
ADSK_Expert_Elite_Icon_S_Color_Blk_125.png

Lien vers le commentaire
Partager sur d’autres sites

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • 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é