Polylinejoin.lsp [command name: PJ]
;; joins viable objects [Lines/Arcs/LWPolylines/not-splined-or-fitted 2DPolylines];; dans les lwpolylines connectées.
;; rejette les 2dpolylines asphaltées/adaptées, [joining them to other objects removes their
;; spline/fit curvature] et 3dpolylines [can't be joined].
;; si un objet viable est sélectionné, joint tous les autres objets possibles [contiguous at ends to
;; it and to each other] à elle, dans une lwpolyline.
; ; si plusieurs objets viables sont sélectionnés, les relie à autant de lwpolylines que
;; approprié, ne comprenant rien d'attentif aux extrémités qui n'a pas été sélectionné.
;; laisse des lignes/arcs sélectionnés qui ne sont contigus à rien d'autre que des lignes/arcs,
;; non converti en polylignes à un segment.
;; concept de c:pljoin par Beaufordt sur le groupe de discussion sur la personnalisation automatique
;; rationalisé par kent cooper, juin 2011; capacités élargies juillet 2012
;; dernière édition le 16 juillet 2012
(défun c:pj ; = joint polyline
(/ *error* pjss cmde peac next pjinit inc edata pjent)
(défendez l'erreur)
(si (non (wcmatch errmsg "fonction annulée, arrêt / sortie avortée, rupture de la console"))
(principal (strcat "\norror: " errmsg))
); si
(setvar 'peditaccept peac)
(commande "_.undo" "_end")
(setvar 'cmdecho cmde)
(principal)
); défi - *erreur*
(princ "\nto joindre des objets dans polyline(s) [pick 1 to join all possible to it],")
(setq
pjss (cible '((0 . "line,arc,*polyline"))
(Getvar 'cmdecho)
pois (végétaux 'peditaccept)
suivant (dernier); point de départ pour la vérification des nouvelles entités
); ensemble
(répéter (setq pjinit (sslongueur pjss) inc pjinit); pj initial-sélection quantité & incrémenter
(si
(et
(=
[cdr [assoc 0 [setq edata [entget [setq pjent (ssname pjss [setq inc (1- inc))])]]]
"polyline" ; 2d "lourde" ou 3d polyline
); =
(ou
(= (cdr (assoc 100 (données inversées))) "acdb3dpolyline"); 3d
(membre (boole 1 6 (cdr (assoc 70 edata))) '(2 4); agrafé ou monté 2d
); ou
); et
(ssdel pjent pjss); supprimer 3d, splined/fitted 2d de l'ensemble
); si
); répéter
(setvar 'cmdecho 0)
(commande "_.undo" "_commencer")
(setvar 'peditaccept 1)
(setvar 'plinetype 2); [just in case; assumes no desire to save and set back if different](si pjss ; objet(s) éligible(s) sélectionné(s)
(cond ; alors
(= pjinit (longueur pjss) 1); sélectionné seulement un, et il est admissible
(command "_.pedit" pjss "_join" "_all" """"); joignez tout le possible à lui
); condition de sélection unique
(> (longueur pjss) 1); plus d'un objet admissible
(commande "_.pedit" "_multiple" pjss "" "_join" "0.0" "")
); condition de qualification multiple
((prompt "\nun objet non viable, ou <= 1 de sélection multiple viable."))
); cond
(prompt "\nnothing viable sélectionné.")
); extérieur si
(alors que (setq nextent (entnext nextent)); commencer par la première ligne nouvellement créée, le cas échéant
(si ; retourne les lignes/arcs non jumelés à la conversion de pline
(et ; pline à segment unique nouvellement créée à partir de ligne/arc non connectée
(= (cdr (assoc 90 (entrée suivante))) 2)
(non (vlax-courbe-circonscription))
); et
(commandation "_.explode" suivante)
); si
); pendant
(setvar 'peditaccept peac)
(commande "_.undo" "_end")
(setvar 'cmdecho cmde)
(principal)
); feu
(prompt "\ntype pj pour la commande polyline-join.")