明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1807|回复: 4

求助陈伯雄老师

[复制链接]
发表于 2003-6-10 17:23:00 | 显示全部楼层 |阅读模式
一个图块中有两个子实体(POLYLINE,CIRCLE),请问如何得到CIRCLE的圆心坐标.
(在不炸碎块的情况下)
子实体数据表:
((-1 . <图元名: 33b0528>) (0 . "CIRCLE") (5 . "25") (100 . "AcDbEntity") (67 .
0) (8 . "0") (100 . "AcDbCircle") (10 5.0 5.0 0.0) (40 . 2.0) (210 0.0 0.0 1.0))
其中(10 5.0 5.0 0.0) 不是当前块中圆的圆心

((-1 . <图元名: 33b0520>) (0 . "LWPOLYLINE") (5 . "24") (100 . "AcDbEntity")
(67 . 0) (8 . "0") (100 . "AcDbPolyline") (90 . 4) (70 . 1) (43 . 0.0) (38 .
0.0) (39 . 0.0) (10 0.0 0.0) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10 10.0 0.0) (40
. 0.0) (41 . 0.0) (42 . 0.0) (10 10.0 10.0) (40 . 0.0) (41 . 0.0) (42 . 0.0)
(10 0.0 10.0) (40 . 0.0) (41 . 0.0) (42 . 0.0) (210 0.0 0.0 1.0))
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2003-6-11 09:31:00 | 显示全部楼层

搜索块中各个对象的模式...

(Defun SBlock (slist / sname)
              (SetQ sname (Cdr (Assoc 2 slist))
                    slist (TblSearch "BLOCK" sname)
              )
              (SetQ etbll (Cons slist etbll)
                    sname (Cdr (Assoc -2 slist))
              )
              (While (SetQ etbll (Cons (EntGet sname) etbll)
                           sname (EntNext sname)
                     )
              )
       )
 楼主| 发表于 2003-6-11 14:02:00 | 显示全部楼层

未解决

我是用(TblSearch "BLOCK" sname)遍历"Block"中的每一个子实体,但对于一个圆子实体,用
entget函数得不到Circle在当前WCS下的圆心坐标.
发表于 2003-6-11 15:58:00 | 显示全部楼层

用坐标转换函数

发表于 2003-6-12 16:45:00 | 显示全部楼层

点转换程序

This is pretty much straight from AutoLISP Programming... by Rawls & Hagen.
;;tmx: 4x4 transformation matrix from nentselp - (caddr (nentselp))
;;p: point to transform
(defun MCS2WCS (TMX P / WX WY WZ)
  (list
    (setq WX
           (+
             (* (car (nth 0 TMX)) (car P))
             (* (cadr (nth 0 TMX)) (cadr P))
             (* (caddr (nth 0 TMX)) (caddr P))
             (cadddr (nth 0 TMX))
           )
    )
    (setq WY
           (+
             (* (car (nth 1 TMX)) (car P))
             (* (cadr (nth 1 TMX)) (cadr P))
             (* (caddr (nth 1 TMX)) (caddr P))
             (cadddr (nth 1 TMX))
           )
    )
    (setq WZ
           (+
             (* (car (nth 2 TMX)) (car P))
             (* (cadr (nth 2 TMX)) (cadr P))
             (* (caddr (nth 2 TMX)) (caddr P))
             (cadddr (nth 2 TMX))
           )
    )
  )
)


;;使用例
(defun C:TT (/ WW TMX P)
  (setq WW (nentselp "\n点选图块中的圆"))
  (setq TMX (caddr WW))
  (setq P (cdr (assoc 10 (entget (car WW)))))
  (MCS2WCS TMX P)
)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-26 16:44 , Processed in 0.173753 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表