形心插块程序UCS问题,求大神帮助解决
论坛上的大神们好,因为是结构新手,用到一个cad的LSP程序,形心插块功能。在世界坐标系中,程序运行没问题,但是对于地库的倾斜柱网,改变UCS之后,非世界坐标系下,运行程序,块插入点不对,跑得很远,求论坛上各位前辈解决一下,如何解决不同UCS下的问题。。。
演示如下:
源码如下:
(defun c:xxck(/ en ent i obj pt ss s1 s2 s3)
(vl-load-com)
(setvar "cmdecho" 0)
(setq blk1 (cdr (assoc 2 (entget (car (entsel "\n选择要插入的块"))))))
(if (setq ss (ssget '((0 . "PLINE,LWPOLYLINE,LINE,ARC,CIRCLE,SPLINE,ELLIPSE"))))
(progn
(setq i -1)
(while (setq s1 (ssname ss (setq i (1+ i))))
(entmakex (entget s1))
(setq s2 (entlast))
(command ".region" s2 "")
(setq s3 (entlast))
(setq obj (vlax-ename->vla-object s3))
(setq pt (vlax-safearray->list (vlax-variant-value (vla-get-centroid obj))))
(entmake (list '(0 . "INSERT") (cons 2 blk1) (cons 10 pt)))
(entdel s3)
)
)
(princ "\n没有选择对象.")
)
(princ)
)
(defun c:xxck (/ en ent i obj pt ss s1 s2 s3)
(vl-load-com)
(setvar "cmdecho" 0)
(setq blk1 (cdr (assoc 2 (entget (car (entsel "\n选择要插入的块"))))))
(if (setq ss (ssget '((0 . "PLINE,LWPOLYLINE,LINE,ARC,CIRCLE,SPLINE,ELLIPSE"))))
(progn
(setq i -1)
(while (setq s1 (ssname ss (setq i (1+ i))))
(entmakex (entget s1))
(setq s2 (entlast))
(command ".region" s2 "")
(setq s3 (entlast))
(setq obj (vlax-ename->vla-object s3))
(setq pt (vlax-safearray->list (vlax-variant-value (vla-get-centroid obj))))
(entmake (list '(0 . "INSERT") (cons 2 blk1) (cons 10 (trans pt 1 0))))
(entdel s3)
)
)
(princ "\n没有选择对象.")
)
(princ)
) 置顶,不要沉,真心求兄弟们解决这个问题。。 这个问题是怎么解决的?求代码 这个真不错,好用
页:
[1]