明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索

[讨论] 如何实现选取边界自动偏移并插入块

[复制链接]
发表于 2013-12-11 09:37:22 | 显示全部楼层
偏爱云~小吴 发表于 2013-12-10 22:21
  1. (defun new_ss (elast / ss1 ss2 ee2 i loop)
  2.   (setq ss2 (ssget "x"))
  3.   (setq i 0 loop t ss1 (ssadd))
  4.   (while loop
  5.     (setq ee2 (ssname ss2 i) i (1+ i))
  6.     (if (not (eq ee2 elast))
  7.       (if (/= (cdr (assoc 0 (entget ee2))) "VIEWPORT")
  8.         (setq ss1 (ssadd ee2 ss1))
  9.       )
  10.       (setq loop nil)
  11.     )
  12.   )
  13.   ss1
  14. )
  15. (defun xgzm (ss lst / ent i x)
  16.     (repeat (setq i (sslength ss))
  17.             (setq ent (entget (ssname ss (setq i (1- i)))))
  18.             (mapcar '(lambda(x) (setq ent (entmod (subst x (assoc (car x) ent) ent)))) lst)
  19.         )
  20. )
  21. (defun c:tt ( / bn box ea i of p0 p10 p11 sl ssk ssl ssn xb xd yb yd)
  22.   (command "undo" "be")
  23.     (setq box (acet-geom-ss-extents (ssget '((0 . "line"))) t)
  24.   xd (- (caadr box) (caar box))
  25.   yd (- (cadadr box) (cadar box))
  26.   p0 (mapcar '* '(0.5 0.5 0.5) (mapcar '+ (car box) (cadr box)))
  27.   of (getdist "\n偏移值<或图面量取>:")
  28.   bn (cdr (assoc 2 (entget (car (entsel "\n选取要插入的图块:")))))
  29.   xb (/ (- xd (* 2 of)) 100)
  30.   yb (/ (- yd (* 2 of)) 80)
  31.   ea (entlast)
  32.   )
  33.   (command "INSERT" bn p0 xb yb "0")
  34.   (command "explode" (entlast))
  35.   (setq ssn (new_ss ea)
  36.   ssk (ssget "p" '((0 . "INSERT")))
  37.   )
  38.   (command "select" ssn "r" ssk "")
  39.   (setq ssl (ssget "p"))
  40.   (xgzm ssk (list (cons 41 1) (cons 42 1) (cons 43 1)))
  41.   (setq  i -1)
  42.   (while (setq sl (ssname ssl (setq i (1+ i))))
  43.     (setq p10 (cdr (assoc 10 (entget sl)))
  44.     p11 (cdr (assoc 11 (entget sl)))
  45.     )
  46.     (command "LENGTHEN" "de" of (list sl p10) (list sl p11) "")
  47.   )
  48.   (command "undo" "e")
  49. )

本帖子中包含更多资源

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

x
发表于 2013-12-11 09:47:45 | 显示全部楼层
本帖最后由 q3_2006 于 2013-12-11 09:50 编辑

块重新做了,主要是调整了插入点,下载我上传的图来测试。补充一句。。用了ET函数。。要装ET哟。。。
 楼主| 发表于 2013-12-11 20:09:10 | 显示全部楼层
q3_2006 发表于 2013-12-11 09:47
块重新做了,主要是调整了插入点,下载我上传的图来测试。补充一句。。用了ET函数。。要装ET哟。。。

感谢大神感谢大神
 楼主| 发表于 2013-12-12 09:53:43 | 显示全部楼层
q3_2006 发表于 2013-12-11 09:37

可否直接根据块名调取
 楼主| 发表于 2013-12-12 11:49:23 | 显示全部楼层
偏爱云~小吴 发表于 2013-12-11 20:09
感谢大神感谢大神

大神用的ET是哪个版本啊
 楼主| 发表于 2013-12-12 12:26:32 | 显示全部楼层
q3_2006 发表于 2013-12-11 09:37

07版又当如何改
发表于 2013-12-12 13:41:47 | 显示全部楼层
发表于 2013-12-12 13:42:43 | 显示全部楼层
就是求选择集中心点...
 楼主| 发表于 2013-12-12 21:29:05 | 显示全部楼层
其实是CAD装的有问题,后来重装就好了,刚开始ET怎么搞都没有反应,多谢了。
如果把需要选择的块直接按块名调取该怎么改,因为就目前我的使用情况,只用那么一个块就可以解决问题,
bn (cdr (assoc 2 (entget (car (entsel "\n选取要插入的图块:")))))
直接插入块又该如何改
是bn (cdr (assoc 2 (entget “块名")))))么?
 楼主| 发表于 2013-12-12 21:36:32 | 显示全部楼层
偏爱云~小吴 发表于 2013-12-12 12:26
07版又当如何改

其实是CAD的ET怎么也激活不了 重装就好了。如果省掉选取块,直接将块名写进程序,通过块名调取又该如何改。改了半天没改成功,哎
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-22 19:37 , Processed in 0.166884 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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