当我发布代码时,我确实注意到了一些我错过的事情。
第一件事是更新此行:
(vl-cmdf "explode" (entlast) "")
你不需要在行尾加引号。只需删除它们。如果这对你不起作用,请告诉我。
你可以做的另一件事是在局部变量中添加*error*
(/ *error* CurLayer OffsetDist VlaObj sset num Ang Ptdist StartPt EndPt)
否则我希望这对你有用。 可能想阅读代码发布指南jsowinski 代码发布指南 谢谢你让我知道。 我唯一想知道的是,我们能在矩形偏移后分解它吗? 快速一:
(defun c:MyOffset ( / ent obj )
(if
(setq *dist*
(cond
( (getdist
(strcat "\nSpecify Offset Distance"
(if *dist* (strcat " <" (rtos *dist*) ">: ") ": ")
)
)
)
( *dist* )
)
)
(while
(progn (setvar 'ERRNO 0) (setq ent (car (entsel "\nSelect LWPolyline: ")))
(cond
( (= 7 (getvar 'ERRNO))
(princ "\nMissed, try again.")
)
( (eq 'ENAME (type ent))
(cond
( (= 4 (logand 4 (cdr (assoc 70 (tblsearch "LAYER" (cdr (assoc 8 (entget ent))))))))
(princ "\nObject is on Locked Layer.")
)
( (eq "LWPOLYLINE" (cdr (assoc 0 (entget ent))))
(foreach obj (vlax-invoke (setq obj (vlax-ename->vla-object ent)) 'explode)
(vla-offset obj *dist*)
)
(vla-delete obj)
t
)
( (princ "\nObject is not an LWPolyline.") )
)
)
)
)
)
)
(princ)
)
(vl-load-com) (princ) 谢谢,李 不用担心,它应该适用于所有LWD多段线,即使是具有圆弧段的多段线。 我需要一些帮助,这个例程是由jsowinski编写的,我添加了一条线来更改矩形层并将其分解,但它会将原始矩形保留在新线下。我需要分解原始矩形。任何帮助都将不胜感激。
(defun c:Offsetpline (/ *error* OffsetDist VlaObj sset num Ang Ptdist StartPt EndPt)
(vl-load-com)
(defun *error* (msg)
(princ)
); _end defun
(setq OffsetDist (getreal "\nEnter an offset distance: "))
(while (setq VlaObj (vlax-ename->vla-object (car (entsel "Select a Rectangle: "))))
(setq Startpt (vlax-curve-getPointAtParam VlaObj 1))
(setq Ang (+ (angle (vlax-curve-getStartPoint VlaObj)(vlax-curve-getPointAtParam VlaObj 1))(* (/ pi 180) 90)))
(setq PtDist (distance Startpt (vlax-curve-getPointAtParam VlaObj 2)))
(vlax-put-property vlaobj 'layer "Router - Green-V groove")
(vl-catch-all-apply 'vlax-invoke-method (list VlaObj 'explode))
(if (equal (polar Startpt Ang PtDist)(vlax-curve-getPointAtParam VlaObj 2) 1.0)
(vl-catch-all-apply 'vlax-invoke-method (list VlaObj 'Offset OffsetDist))
(vl-catch-all-apply 'vlax-invoke-method (list VlaObj 'Offset (- OffsetDist)))
); _end if
(setq VlaObj (vlax-ename->vla-object (entlast)))
(vl-catch-all-apply 'vlax-put (list VlaObj 'Layer "Router - Blue - Cuts"))
(vl-cmdf "explode" (entlast))
(setq sset (ssget "_P"))
(setq num -1)
(repeat (sslength sset)
(setq VlaObj (vlax-ename->vla-object (ssname sset (setq num (1+ num)))))
(setq StartPt (polar (vlax-get VlaObj 'StartPoint)(vlax-get VlaObj 'Angle) OffsetDist))
(vl-catch-all-apply 'vlax-put (list VlaObj 'StartPoint StartPt))
(setq EndPt (polar (vlax-get VlaObj 'EndPoint)(- (vlax-get VlaObj 'Angle) pi) OffsetDist))
(vl-catch-all-apply 'vlax-put (list VlaObj 'EndPoint EndPt))
); _end repeat
); _end while
(princ)
); _end defun
http://www.cadtutor.net/forum/showthread.php?66513-将矩形偏移为单独的线&p=455332&viewfull=1#post455332
页:
1
[2]