- 积分
- 2865
- 明经币
- 个
- 注册时间
- 2013-3-27
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
3明经币
论坛上的大神们好,因为是结构新手,用到一个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))
(c ...
|