- (setq insecpoint (vlax-invoke obj1 'IntersectWith obj2 acExtendBoth))
包含包含六个元素的数组(用于两点)。
(defun c:cornor\u of_obj(/os\u old cl\u old sel1 sel2 ent1 ent2 entny1 entny2 enttype1 enttype2
obj1 obj2 p1 p2 p3 p4 pt中心点)
(vl load com)
(defun*错误*(msg)
(setvar“cmdecho”os_old)
(setvar“clayer”cl_old)
(普林斯)
)
(如果(不是)(tblsearch“layer”“0虚线层"))
(命令“.layer”“\u new”“0虚线层“”颜色“2”0虚线层“”\u ltype“”虚线“”0虚线层" "")
(命令“_.layer”“thaw”“0虚线层“”0上的“”虚线层“解锁”0虚线层" "")
)
(setq os_old(getvar“cmdecho”))
(setq cl_old(getvar“clayer”))
(setvar“clayer”0虚线层")
(setvar“cmdecho”0)
(setq sel1(entsel“选择对象:”))
(setq ent1(car sel1))
(如果(/=nil ent1)
(程序
(setq entiny1(entget ent1)
enttype1(assoc 0 entiny1)
)
(如果(或(=“LINE”(cdr enttype1))(=“ARC”(cdr enttype1)))
(程序
(setq obj1(vlax ename->vla object ent1))
(setq p1(vlax safearray->列表(vlax变量值(vla get startpoint obj1)))
p2(vlax safearray->列表(vlax变量值(vla get endpoint obj1)))
)
(setq sel2(entsel“选择对象:”))
(setq ent2(car sel2))
(如果(/=nil ent2)
(程序
(setq entiny2(entget ent2)
enttype2(assoc 0 entiny2)
)
(如果(或(=“LINE”(cdr enttype2))(=“ARC”(cdr enttype2)))
(程序
(setq obj2(vlax ename->vla object ent2))
(setq p3(vlax safearray->列表(vlax变量值(vla get startpoint obj2)))
p4(vlax safearray->列表(vlax变量值(vla get endpoint obj2)))
)
;(setq insecpoint(vlax调用obj1’与obj2 acExtendBoth相交))
(setq insecpoint(vlax safearray->列表(vlax变量值(vla intersectwith obj1 obj2 acExtendBoth)))
(如果(/=零)
(程序
(setq d1(点p1的距离))
(setq d2(点p2的距离))
(如果(
(setq pt p1)
(setq pt p2)
)
;第1行
(cond((=“LINE”enttype1)
(命令“_.Line”insecpoint pt“”)
)
(=“ARC”enttype1)
(setq centerpt(vlax safearray->list(vlax variant value(vla get center ent1)))
(命令“_.arc”“\u c”centerpt insecpoint pt)
)
)
(如果(
(setq pt p3)
(setq pt p4)
)
;第2行
(cond((=“LINE”enttype2)
(命令“_.Line”insecpoint pt“”)
)
(=“ARC”enttype2)
(setq centerpt(vlax safearray->list(vlax variant value(vla get center ent1)))
(命令“_.arc”“\u c”centerpt insecpoint pt)
)
)
)
)
)
)
)
)
)
)
)
)
(setvar“cmdecho”os_old)
(setvar“clayer”cl_old)
(普林斯)
)