;;; OFSEGS (gile) 26/08/08
;;; Décale les segments de polyligne sélectionnés.
(defun c:ofsegs
(/ ofdist ent pline normal elevat params
points side closest par bulge p1
p2 arc_data
)
)
(strcat "\nSpécifiez la distance de décalage ou [Par] <" "par"
)
">: "
)
)
)
)
)
)
pline
)
)
params
)
)
(HighlightSegment pline
(car params
)) (setq ent
(entsel "\nSélectionnez le segment suivant ou <Quitter>: ")) pline
)
)
)
)
(foreach p params
(HighlightSegment pline p
)) )
)
)
(if (setq side
(GetPointAboutPlane
normal
"\nSpécifiez une valeur pour \"Par le point\": "
"\nSpécifiez un point sur le côté à décaler: "
)
)
)
)
)
)
side
(trans side
0 normal
) )
)
(clockwise-p
0
normal
)
0
normal
)
)
+
-
)
0
normal
T
)
)
(/ pi 2)
)
ofdist
)
)
)
(T
side
(trans side
0 normal
) )
)
)
0
normal
)
0
normal
)
)
(if (clockwise
-p side p2 p1
) )
(setq arc_data
(PolyArc
-data bulge p1 p2
)) )
)
)
)
)
)
)
)
)
(Copysegments pline params)
)
)
)
)
(princ "\nEntité non valide.") )
)
;;================================================================;;
;; COPSEGS (gile) 26/03/08
;; Copie les segments de polyligne sélectionnés.
(defun c:copsegs
(/ ent pl par lst
) )
pl
)
)
)
(HighlightSegment pl par)
(setq ent
(entsel "\nSélectionnez le segment suivant ou <Quitter>: ")) pl
)
)
)
)
(foreach p lst
(HighlightSegment pl p
)) )
)
)
(list from
"\nSpécifiez le deuxième point: ") )
)
)
)
)
)
(CopySegments pl lst)
)
)
)
)
(princ "\nEntité non valide.") )
)
;;================================================================;;
;; CopySegments
;; Copie des segments de polyligne
;; Les segments sont copiés à la même place et conservent leurs propriétés
;; Les segments jointifs sont unis en une polyligne unique
;;
;; Arguments
;; pline : la polyligne source (vla-object)
;; params ; la liste des indices des segment à copier
;;
;; Retour
;; la liste des polylignes créées
(defun CopySegments
(pline params
/ nor space tmp copy ret
) )
)
)
1e-9
)
)
)
)
)
)
)
)
)
)
pts
)
)
)
)
)
tmp
)
)
)
space
'addLightWeightPolyline
)
)
copy
)
)
(foreach prop '
(Elevation Layer Linetype
LinetypeGeneration LinetypeScale
Lineweight Normal Thickness
TrueColor
)
)
)
)
)
)
;;================================================================;;
;; HighlightSegment
;; Met un segment de polyligne en surbrillance
;;
;; Arguments
;; pl : la polyligne (vla-object)
;; par : l'indice du segment
(defun HighlightSegment
(pl par
/ p1 p2 n lst
) lst
)
n (+ n 0.01)
)
)
)
)
)
)
)
;;================================================================;;
;;; Clockwise-p
;;; Retourne T si les points p1 p2 et p3 tournent dans le sens horaire
(defun clockwise
-p
(p1 p2 p3
) )
;;================================================================;;
;;; Polyarc-data
;;; Retourne la liste des données d'un arc de polyligne (centre rayon angle).
(defun polyarc
-data
(bu p1 p2
/ ang rad cen area cg
) )
(+ (angle p1 p2
) (- (/ pi
2) ang
)) rad
)
)
)
;;================================================================;;
;; GETPOINTABOUTPLANE
;; Retourne le point d'intersection de la perpendiculaire à la vue courante passant
;; par le point saisi par l'utilsateur et le plan défini par sa normale et un point.
;;
;; Arguments
;; nor : le vecteur normal du plan d'intersection
;; org : un point sur le plan d'intersection (SCG)
;; msg : le message d'invite ou ""
;;
;; Retour : les coordonnées (SCG) du point d'intersection ou nil
(defun GetPointAboutPlane
(nor org msg
/ p1 p2 sc
) (/= 0
)
)
(- x1 x2)
)
x1
)
)
)
p1
p2
)
)
)