代理对象
我怎样才能找到这些项目点的坐标。Cad文件已上载。
代理对象。图纸 我只能解决这个问题(带有边界框比较的半自动):
(defun C:test ( / s sl d cen bp SS i e lst plst osm )
(setvar 'errno 0) (redraw)
(while (/= 52 (getvar 'errno))
(princ "\nSelect source proxy entity for reference <exit>: ")
(setq s (ssget "_+.:E:S" '((0 . "ACAD_PROXY_ENTITY"))))
(cond
((= 7 (getvar 'errno)) (princ "\nMissed, try again."))
((= 'PICKSET (type s))
(setq s (ssname s 0))
(vla-GetBoundingBox (vlax-ename->vla-object s) 'll 'ur)
(setq sl (mapcar 'vlax-safearray->list (list ll ur)))
(setq d (apply 'distance sl))
(setq cen (mapcar '(lambda (a b) (/ (+ a b) 2.)) (car sl) (cadr sl)))
(command "_.EXPLODE" s) ; I don't want to explode it, only the proxy's basept to be snappable
(if (setq bp (getpoint "\nSpecify its base point for reference < exit >: " cen))
(progn (setq sl (list d (angle cen bp) (distance cen bp))) (grdraw cen bp 1 1) (setq plst (cons bp plst)))
(setq sl nil)
)
(setvar 'errno 52)
)
(T nil)
); cond
); while
(if
(and sl
; (princ "\nSelect proxy objects: ")
(setq SS (ssget "_X" (list (cons 0 "ACAD_PROXY_ENTITY")(if (= 1 (getvar 'cvport)) (cons 410 (getvar 'ctab)) '(410 . "Model")))))
)
(progn
(repeat (setq i (sslength SS))
(setq e (ssname SS (setq i (1- i))))
(vla-GetBoundingBox (vlax-ename->vla-object e) 'll 'ur)
(setq lst (mapcar 'vlax-safearray->list (list ll ur)))
(if (equal (setq d (apply 'distance lst)) (car sl) 1e-8)
(progn
(setq cen (mapcar '(lambda (a b) (/ (+ a b) 2.)) (car lst) (cadr lst)))
(setq bp (polar cen (cadr sl) (caddr sl)))
(setq plst (cons bp plst))
); progn
); if
); repeat
(setq osm (getvar 'osmode))
(setvar 'osmode 0)
(setvar 'pdmode 35)
(foreach x plst (entmakex (list (cons 0 "POINT") (cons 62 1) (cons 10 x)))) ; graphical check
(princ (strcat "\nProceeded " (itoa (length plst)) " proxy objects with the same BoundingBox."))
(setvar 'osmode osm)
); progn
); if
(princ)
);| defun |; (vl-load-com) (princ)
选定的源代理已分解(抱歉)。
也许其他人可以“开发”或想出更好的办法。 Wimal对象是
AECC_点图层:“0”
空间:模型空间
手柄=472
文本位置:(321447.349944110.55,0.00)
文字旋转:
正常:(0.00,0.00,1.00)
组名称:
点数:372
点名称:
北距:9944110.55
东距:321447.34
标高:1468.81 XDRef:
原始描述:NYCS0071 XDRef:
完整描述:NYCS0071
标记位置:(321447.349944110.55,0.00)
因为我有CIV3D没问题,如果你用这个,你会得到什么请张贴,只是复制和粘贴到命令行。
(vlax-Dump-Object (vlax-Ename->Vla-Object (car (entsel))))
谢谢Bigal先生,我用autocad 2016运行它。
即使在civil 3d 2015中
使用civil 3D打开后
当我选择它时,将插入点对齐。
当我移动它时,会自动生成一个指向插入点的箭头。。
但我不能得到插入点的值。
一定有人有办法。
下面的代码有点风险,因为与Grrr的建议一样,使用了_Explode命令:
(defun KGA_Sys_Entlast ( / enm tmp)
(if (setq enm (entlast))
(while (setq tmp (entnext enm))
(setq enm tmp)
)
)
enm
)
; (AeccDbPointInsPointGet (car (entsel)))
(defun AeccDbPointInsPointGet (enm / enmLast obj ptLst tmp)
(setq enmLast (KGA_Sys_Entlast))
(setvar 'cmdecho 0)
(command "_.explode" enm)
(while (setq tmp (entnext enmLast))
(if (= "AcDbLine" (vla-get-objectname (setq obj (vlax-ename->vla-object tmp))))
(setq ptLst (vl-list* (vlax-get obj 'startpoint) (vlax-get obj 'endpoint) ptLst))
)
(setq enmLast tmp)
)
(command "_.u")
(setvar 'cmdecho 1)
(if (= 4 (length ptLst)) (apply 'inters ptLst))
)
页:
[1]