马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
本帖最后由 marting 于 2021-1-27 16:09 编辑
1. 偏移某段
2. 复制多段线的某段
![](source/plugin/imc_colorcode/images/loading.gif) - ;;================================================================;;
- ;; COPSEGS (gile) 26/03/08
- ;; Copie les segments de polyligne sélectionnés.
- (defun c:copsegs (/ ent pl par lst)
- (vl-load-com)
- (if (and (setq ent (entsel "\nSélectionnez un segment à copier: "))
- (setq pl (vlax-ename->vla-object (car ent)))
- (= (vla-get-ObjectName pl) "AcDbPolyline")
- )
- (progn
- (setq par (fix (vlax-curve-getParamAtPoint
- pl
- (trans (osnap (cadr ent) "_nea") 1 0)
- )
- )
- lst (cons par lst)
- )
- (HighlightSegment pl par)
- (while
- (setq ent
- (entsel "\nSélectionnez le segment suivant ou <Quitter>: "
- )
- )
- (if (equal (vlax-ename->vla-object (car ent)) pl)
- (progn
- (setq par (fix (vlax-curve-getParamAtPoint
- pl
- (trans (osnap (cadr ent) "_nea") 1 0)
- )
- )
- lst (if (member par lst)
- (vl-remove par lst)
- (cons par lst)
- )
- )
- (redraw)
- (foreach p lst (HighlightSegment pl p))
- )
- )
- )
- (setq lst (vl-sort lst '<))
- (if (setq from (getpoint "\nSpécifiez le point de base: "))
- (while (and
- (setq to (vl-catch-all-apply
- 'getpoint
- (list from "\nSpécifiez le deuxième point: ")
- )
- )
- (listp to)
- )
- (mapcar (function (lambda (p)
- (vla-move p
- (vlax-3d-point (trans from 1 0))
- (vlax-3d-point (trans to 1 0))
- )
- )
- )
- (CopySegments pl lst)
- )
- )
- )
- (redraw)
- )
- (princ "\nEntité non valide.")
- )
- (princ)
- )
拷贝某段函数:
亮显某段的函数:
游客,本帖隐藏的内容需要积分高于 30 才可浏览,您当前积分为 0
其他函数:
![](source/plugin/imc_colorcode/images/loading.gif) - ;;================================================================;;
- ;;; Clockwise-p
- ;;; Retourne T si les points p1 p2 et p3 tournent dans le sens horaire
- (defun clockwise-p (p1 p2 p3)
- (< (sin (- (angle p1 p3) (angle p1 p2))) -1e-14)
- )
- ;;================================================================;;
- ;;; 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)
- (setq ang (* 2 (atan bu))
- rad (/ (distance p1 p2)
- (* 2 (sin ang))
- )
- cen (polar p1
- (+ (angle p1 p2) (- (/ pi 2) ang))
- rad
- )
- )
- (list cen (abs rad) ang)
- )
- ;;================================================================;;
- ;; 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)
- (if (and (setq p1 (getpoint msg))
- (setq p1 (trans p1 1 0))
- (setq p2 (trans p1 0 2))
- (setq p2 (trans (list (car p2) (cadr p2) (1+ (caddr p2))) 2 0))
- (/= 0
- (setq sc (apply '+ (mapcar '* nor (mapcar '- p2 p1))))
- )
- )
- (mapcar
- (function
- (lambda (x1 x2)
- (+ (* (/ (apply '+ (mapcar '* nor (mapcar '- p1 org))) sc)
- (- x1 x2)
- )
- x1
- )
- )
- )
- p1
- p2
- )
- )
- )
|