超级OFFSET,能偏移块,XREF里面的曲线
(defun c:OffsetNested (/ *error* AT:GetSel dist ent new)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;; SUBROUTINES ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun *error* (msg)
(and ent (redraw (car ent) 4))
(and new (entdel new))
(and cmd (setvar 'CMDECHO cmd))
(if (and msg (not (wcmatch (strcase msg) "*BREAK*,*CANCEL*,*QUIT*,")))
(progn (vl-bt) (princ (strcat "\nError: " msg)))
)
)
(defun AT:GetSel (meth msg fnc / ent)
;; meth - selection method (entsel, nentsel, nentselp)
;; msg - message to display (nil for default)
;; fnc - optional function to apply to selected object
;; Ex: (AT:GetSel entsel "\nSelect arc: " (lambda (x) (eq (cdr (assoc 0 (entget (car x)))) "ARC")))
;; Alan J. Thompson, 05.25.10
(while
(progn (setvar 'ERRNO 0)
(setq ent (meth (cond (msg)
("\nSelect object: ")
)
)
)
(cond ((eq (getvar 'ERRNO) 7) (princ "\nMissed, try again."))
((eq (type (car ent)) 'ENAME)
(if (and fnc (not (fnc ent)))
(princ "\nInvalid object!")
)
)
)
)
)
ent
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;; MAIN ROUTINE ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(initget 6 "Through")
(setq dist (getdist (strcat "\nOffset Nested\nSpecify offset distance or <"
(if (minusp (getvar 'OFFSETDIST))
"Through"
(rtos (getvar 'OFFSETDIST))
)
">: "
)
)
)
(cond ((not dist))
((eq (getvar 'OFFSETDIST) dist))
((eq dist "Through") (setvar 'OFFSETDIST -1.))
((setvar 'OFFSETDIST dist))
)
(if (and (setq ent (AT:GetSel nentselp
"\nSelect object to offset: "
(lambda (x)
(member (cdr (assoc 0 (entget (car x))))
'("ARC" "CIRCLE" "ELLIPSE" "LINE" "LWPOLYLINE" "SPLINE")
)
)
)
)
(progn
(if (eq (length ent) 4)
(progn (setq new (entmakex
(subst (cons 8 (getvar 'CLAYER))
(assoc 8 (entget (car ent)))
(entget (car ent))
)
)
)
(vla-transformby (vlax-ename->vla-object new) (vlax-tmatrix (caddr ent)))
(setq ent (list new (cadr ent)))
)
)
(redraw (car ent) 3)
(setq pnt (getpoint (cadr ent)
(if (minusp (getvar 'OFFSETDIST))
"\nSpecify through point: "
"\nSpecify point on side to offset: "
)
)
)
)
)
(command "_.offset" "" ent "_non" pnt "")
)
(*error* nil)
(princ)
)
(vl-load-com)
(princ)
**** Hidden Message *****
{:1_1:}好高级 这个厉害了..
感谢分享程序! 看看隐藏了什么{:1_12:} 来学习的,路太漫长了!
看看隐藏了什么 太实用了,感谢楼主的源代码! 学习,学习,学习
回复学习是个好习惯 马后再看 找了好久。谢谢
看标题高大上啊。 吧,也行呀?吃了饭**形象代言人 块解决?{:1_6:}{:1_6:}{:1_6:}{:1_6:}