明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3861|回复: 9

如何提取块的属性

[复制链接]
发表于 2009-5-6 23:26:00 | 显示全部楼层 |阅读模式

请教高手:

设块"BB"的插入点为(0.0,0.0),插入块"BB"后移到(10.0,10.0)

(tblsearch "block" "BB"))

返回:((0 . "BLOCK") (2 . "BB") (70 . 0) (4 . "") (10 0.0 0.0 0.0) (-2 <图元名: 7ef58440>)).

得到的坐标是块"BB"原设置的插入点坐标,请问:如何取得移动后(10.0,10.0)的坐标?

谢谢各位大侠了!

发表于 2009-5-7 16:47:00 | 显示全部楼层

你是在找“insert”图元的插入点?
不需要tblsearch的

(cdr (assoc 10 (entget (car (entsel)))))

发表于 2009-5-7 19:57:00 | 显示全部楼层
区分"块"和"块参照"你就知道你错在哪里了
 楼主| 发表于 2009-5-8 15:29:00 | 显示全部楼层

我是新手,刚开始用Lisp。重新叙述一下我的目的:

设块"BB"的插入点为(0.0,0.0),在新图中(10.0,10.0)点插入块"BB",或者说"BB"在新图中插入点坐标是(10.0,10.0)。

我想要得到的是新图中"BB"块的当前坐标(10.0,10.0),并在工作区X,Y位置显示该坐标。。。。

有劳各位大侠指教了

发表于 2009-5-8 19:35:00 | 显示全部楼层
(defun c:tt ()
 (if (and
      (setq s1 (entsel "\n选择图块:"))
      (= (cdr(assoc 0 (entget(car s1)))) "INSERT")
     )
  (setq inspt (cdr(assoc 10 (entget(car s1)))))
 )
 inspt
)
 楼主| 发表于 2009-5-8 23:33:00 | 显示全部楼层

非常感谢!非常感谢ZZXXQQ先生!

可否帮我解决下一步问题:

当图中插入有已知的"AA"块和"BB"块,希望分别得到它们的当前坐标。

再次感谢ZZXXQQ先生

发表于 2009-5-9 17:38:00 | 显示全部楼层
(defun c:tt ()
 (if (setq ss (ssget "X" '((0 . "INSERT") (2 . "AA,BB")))) (progn
  (setq i 0)
  (repeat (sslength ss)
   (setq ent (entget(ssname ss i))
         i (1+ i))
   (princ "\n")
   (princ (cdr(assoc 2 ent)))
   (princ " : ")
   (princ (cdr(assoc 10 ent)))
  )
 ))
 (princ)
)
 楼主| 发表于 2009-5-9 23:17:00 | 显示全部楼层

从别人处找了本98年出版的AutoLISP教程,临时磨刀上阵,无法对其函数精髓的领会,惭愧。

多亏有了如ZZXXQQ先生这样的热心人,再次谢谢啦!

搬用上面的代码,折腾了几个小时,终于按自己需要凑合可用了。虽然上不了台面,毕竟是我的处女作也。

(defun c:tt ()
 (command "osnap" "none")
 (command "zoom" "e")

 (if (setq ss (ssget "X" '((0 . "INSERT") (2 . "AA")))) (progn
  (setq i 0)
  (repeat (sslength ss)
   (setq ent (entget(ssname ss i))
         i (1+ i))
    (setq J1 (/ (- (caddr(assoc 10 ent)) 15) 5))
    (setq J1 (rtos J1 2 2))
    (command "change" "w" "18.5,10" "26.5,12" "" "" "" "" "" "0" J1)
  )
 ))
 (princ)

 (if (setq ss (ssget "X" '((0 . "INSERT") (2 . "BB")))) (progn
  (setq i 0)
  (repeat (sslength ss)
   (setq ent (entget(ssname ss i))
         i (1+ i))
    (setq J2 (/ (- (caddr(assoc 10 ent)) 15) 5))
    (setq J2 (rtos J2 2 2))
    (command "change" "w" "18.5,8" "26.5,10" "" "" "" "" "" "0" J2)
  )
 ))
 (princ)

 
 (command "osnap" "int")

)

 楼主| 发表于 2009-5-9 23:25:00 | 显示全部楼层

附上test.dwg文件

 楼主| 发表于 2009-5-9 23:27:00 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-9-28 18:22 , Processed in 0.201978 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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