明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: 司徒妙嘉

[提问] 能否用lisp实现快速将选中的图元另存一个cad文件

[复制链接]
发表于 2017-11-28 11:45:55 | 显示全部楼层
本帖最后由 yaokui25 于 2017-11-28 12:02 编辑

把黄色线段通过命令实现闭合多段线
每块材料名称必须保证在多段线内
这样的话就可以实现批量输出单品。




点评

还要考虑内孔  发表于 2017-11-28 12:15
发表于 2017-11-29 08:23:15 | 显示全部楼层
司徒妙嘉 发表于 2017-11-28 09:43
很像,很像! 兄弟,我就指望你了!

鄙人思路如下
爱lisp开发论坛 - 一个专业的CAD二次开发论坛!  http://bbs.ivlisp.com/forum.php? ... ;tid=497&extra=
 楼主| 发表于 2017-11-29 12:06:35 | 显示全部楼层
情迷法兰西0 发表于 2017-11-29 08:23
鄙人思路如下
爱lisp开发论坛 - 一个专业的CAD二次开发论坛!  http://bbs.ivlisp.com/forum.php?mod=vie ...

哎呀,原来自己搞了个论坛啊.
代码我看了, 但是我不是很看得懂. 以下几个问题请教下:
1. 是不是对象必须是要多段线,而且多段线轮廓内不能再有孔?
2. 是不是必须像你前面演示gif里面一样, 每个子图都要在相同大小的框内, 然后通过等量变换中心位置来循环?
3. "图元中点","图元对角"咋整?
发表于 2017-11-29 13:07:05 | 显示全部楼层
司徒妙嘉 发表于 2017-11-29 12:06
哎呀,原来自己搞了个论坛啊.
代码我看了, 但是我不是很看得懂. 以下几个问题请教下:
1. 是不是对象必须 ...

回您的问题
1、对象是不是多段线不重要,只要能确定出一个选择集即可。多段线内能不能再有孔?随便,只要包含在选择集内的都会被另存为一个DWG
2、每个子图相不相同不重要,只要可以每次确定选择集即可,通过何种方式进行中心位置循环 不重要,这个是视觉效果,可以不变换视口内容。
3、图元中点,图元对角为defun 的子函数
4、不是我的论坛,只是已经发在一个论坛了就没必要发重复的帖子在明经了
发表于 2017-11-29 15:18:32 | 显示全部楼层
ssget wblock就行

点评

怎么把选中的text中的内容给到wb中作为保存路径及文件名?能不能给点代码?  发表于 2017-11-29 16:00
逐个手动选取是吧?  发表于 2017-11-29 15:58
 楼主| 发表于 2017-11-29 16:18:14 | 显示全部楼层
本帖最后由 司徒妙嘉 于 2017-11-29 16:23 编辑
情迷法兰西0 发表于 2017-11-29 13:07
回您的问题
1、对象是不是多段线不重要,只要能确定出一个选择集即可。多段线内能不能再有孔?随便,只 ...

我真的还是小白, 你对我用您这样的称呼我受不起啊,,,
我看到代码第三行就是(setq ss(ssget'((0 . "*polyline")))这不是选中多段线的意思吗? \n子图是不是都要放到像图2那样的格子区域内?像图1这样的用不了的?



本帖子中包含更多资源

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

x
发表于 2017-11-30 08:55:55 | 显示全部楼层

(setq wz (ssget "WP" pts (list '(0 . "TEXT"))))

点评

这个是取文字内容吧, 我要怎么把文字内容及选中的件分别设为(command "wblock" 后面的参数)呢?  发表于 2017-11-30 17:48
 楼主| 发表于 2017-12-1 09:09:38 | 显示全部楼层
情迷法兰西0 发表于 2017-11-29 13:07
回您的问题
1、对象是不是多段线不重要,只要能确定出一个选择集即可。多段线内能不能再有孔?随便,只 ...

你的那代码里面就是在图元中心跟图框对角上面的plinexy是什么函数啊??
 楼主| 发表于 2017-12-1 09:32:36 | 显示全部楼层
血司 发表于 2017-11-30 08:55
(setq wz (ssget "WP" pts (list '(0 . "TEXT"))))
  1. (defun c:ftc ( tcont pt / n ent enttype)
  2.         (setq pt (ssget)
  3.                 n 0
  4.                 ent (ssname pt n)
  5.                 enttype (cdr (assoc 0 (entget ent)))
  6.         )
  7.         (while (/= enttype "TEXT")
  8.                 (setq n (1+ n))
  9.                 (setq ent (ssname pt n)
  10.                         enttype (cdr (assoc 0 (entget ent)))
  11.                 )
  12.                 ;(princ n)
  13.                 ;(princ ent)
  14.                 ;(princ enttype)
  15.                 ;(princ "\n")
  16.         )
  17.         (setq tcont (cdr (assoc 1 (entget ent))))
  18.         (command "wblock" pt (strcat "C:\Users\Onca\Desktop" tcont ".dwg")
  19. )

我取到了需要独立成图形文件(pt), 以及命名该文件的用的文件名就是框选内容中的问题内容(tcont),
我该怎么把这两个参数给到"wblock"就是上面代码最后一句.
发表于 2017-12-4 14:36:02 来自手机 | 显示全部楼层
;还是73哥说的WBLOCK好 (defun ss2lst (ss / l n) ;_by Gu_lx  (repeat (setq n (sslength ss))  (setq l (cons (ssname ss (setq n (1- n))) l))  )  l ) ;;;取出图元索引i对应的值 (defun dxf (ent i)  (cdr (assoc i (entget ent))) ) (defun c:tt (/ fold ss txtent name fl path)  (setq Fold (getvar "dwgprefix"));_当前文件路径  (setq ss (ssget))  (setq TxtEnt (car (vl-remove-if-not '(lambda (ent) (= "TEXT" (dxf ent 0)))(ss2lst ss))))  (setq name (dxf txtent 1))  (setq flpath (strcat fold name))  (command "wblock" flpath "" "0,0" ss "" ) )
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-19 19:43 , Processed in 0.173195 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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