马尔科·里巴
我知道这本书最初是李写的,我并不是想从他那里拿走它,我只是为了我需要的东西而修改,但我需要一些帮助。如果有人能帮我,我将不胜感激。请看红色的评论。
- (defun c:segoff ( / a b d e i l n p s v x y z )
- (initget 6)
- (if (and (setq d (getdist "\nSpecify offset: "))
- (setq s (ssget '((0 . "LWPOLYLINE") (-4 . "&=") (70 . 1) (-4 . "<NOT") (-4 . "<>") (42 . 0.0) (-4 . "NOT>"))))
- (setq num -1)
- )
- (repeat (setq i (sslength s))
- (setq VlaObj (vlax-ename->vla-object (ssname s (setq num (1+ num)))))
- (vl-catch-all-apply 'vlax-put (list VlaObj 'Layer "LAYER NAME"))
- (setq i (1- i)
- e (ssname s i)
- x (entget e)
- p (LM:defaultprops x)
- z (list (cdr (assoc 38 x)))
- l nil
- )
- (while (setq v (assoc 10 x))
- (setq l (cons (append (cdr v) z) l)
- x (cdr (member v x))
- )
- )
- (setq n (/ pi (if (LM:listclockwise-p l) 2 -2)))
- (mapcar
- '(lambda ( x y / a b )
- (setq a (+ (angle x y) n)
- b (list x (polar x a d) (polar y a d) y)
- )
- (mapcar
- '(lambda ( a b )
- (entmake (vl-list* '(0 . "LINE") (cons 10 (trans a e 0)) (cons 11 (trans b e 0)) p))
- (vl-catch-all-apply 'vlax-put (list (vlax-ename->vla-object (entlast)) 'Layer "LAYER NAME"))
- )
- b (cdr b)
- )
- )
- (cons (last l) l) l
- )
- )
- )
- (setq obj (vl-catch-all-apply 'vlax-invoke (list VlaObj 'explode))) [color=red];;; I'm trying to figure out how to collect the lines this creates to use on the next step[/color]
- (setq objLst(mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr(ssnamex obj)))))
- (vla-StartUndoMark (setq actDoc (vla-get-ActiveDocument (vlax-get-acad-object))))
- (foreach ln objLst (vlax-put ln 'startpoint (polar (vlax-get ln 'startpoint)(vlax-get ln 'angle)(- d))))
- (foreach ln objLst (vlax-put ln 'endpoint (polar (vlax-get ln 'endpoint)(vlax-get ln 'angle)d)))
- (vla-EndUndoMark actDoc)
- (vl-catch-all-apply 'vla-delete (list VlaObj))
- (princ)
- )
- ;; List Clockwise-p - Lee Mac
- ;; Returns T if the point list is clockwise oriented
- (defun LM:listclockwise-p ( lst )
- (minusp
- (apply '+
- (mapcar
- (function
- (lambda ( a b )
- (- (* (car b) (cadr a)) (* (car a) (cadr b)))
- )
- )
- lst (cons (last lst) lst)
- )
- )
- )
- )
- ;; Default Properties - Lee Mac
- ;; Returns a list of DXF properties for the supplied DXF data,
- ;; substituting default values for absent DXF groups
- (defun LM:defaultprops ( enx )
- (mapcar '(lambda ( x ) (cond ((assoc (car x) enx)) ( x )))
- '(
- (006 . "BYLAYER")
- (008 . "TOP")
- (039 . 0.0)
- (048 . 1.0)
- (062 . 256)
- (370 . -1)
- )
- )
- )
- (princ)
谢谢
布瑞恩 |