nadaloveluna 发表于 2016-4-21 12:56:20

形心插块程序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)
)

vectra 发表于 2016-4-21 12:56:21

(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)
)

nadaloveluna 发表于 2016-4-21 14:12:17

置顶,不要沉,真心求兄弟们解决这个问题。。

hetozju_ming 发表于 2022-4-28 17:06:24

这个问题是怎么解决的?求代码

戏男 发表于 2022-6-29 16:15:48

这个真不错,好用
页: [1]
查看完整版本: 形心插块程序UCS问题,求大神帮助解决