图块打包生成lsp程序 ss2lsp
本帖最后由 wzg356 于 2023-11-29 11:27 编辑这个是http://bbs.mjtd.com/thread-184666-1-1.html的一部分,剥离出来
固版也写有一个
图块打包生成插入图块的lsp程序--------可用于建立管理符号库/块
支持 '((0 . "*LINE,CIRCLE,ARC,ELLIPSE,3DFACE,*TEXT,DIMENSION,INSERT,ATTDEF,HATCH,LEADER,MULTILEADER"))
包含属性块,动态块不支持
复杂填充处理有点缺陷
尽量用常用的自定义线型、填充、字体等
样式bug已修符
DIMENSION对象群码表没有的箭头、尺寸线等属性全部随样式
命令ss2lsp
可以按下面写法改写是否还支持其他图元
下面是启动函数的写法(已在fas里面)
这里只打包一个选择集
生成的插入块程序在C盘根目录
生成的程序函数名按时间序列命名,避免重名
生成的插入图块程序xxx.lsp里面顶部有备注用法
(defun c:ss2lsp( / filters ss strs funstr)
(if (and(setq ss(ssget
'((0 . "*LINE,CIRCLE,ARC,ELLIPSE,3DFACE,*TEXT,DIMENSION,INSERT,ATTDEF,HATCH,LEADER,MULTILEADER"))
))
(setq funstr(strcat"X"(substr(rtos(* (getvar "cdate")1e4)2 0)5)))
(setq strs(sss2lsp(list ss) funstr))
)(progn
(setq funstr(strcat "c:\\"funstr".lsp"))
(setq f(open funstr "w"))
(foreach str strs(write-line str f))
(close f)
(alert(strcat"\n成功输出文件"funstr))
))
)
需要扩展使用的,(sss2lsp(list ss1 ss2 .....) "函数名");返回ss1 ss2的插入程序字符串
;;;===============
(DEFUN X11212102ENTALL (E / ENT SS ENV) (SETQ ENT E) (DEFUN ENV (ENT) (MEMBER (CDR (ASSOC 0 (ENTGET ENT))) (QUOTE ("ATTRIB" "VERTEX" "SEQEND")))) (SETQ SS (SSADD)) (IF (OR ENT (AND (SETQ ENT (ENTNEXT)) (IF (NOT (ENV ENT)) (SSADD ENT SS)))) (WHILE (SETQ ENT (ENTNEXT ENT)) (IF (NOT (ENV ENT)) (SSADD ENT SS)))) SS)
; 错误: 参数类型错误: streamp nil 本帖最后由 wzg356 于 2023-11-21 18:24 编辑
hao3ren 发表于 2023-11-21 15:55
带有文字和标注的样式会丢
文字样式修复了,宋体原因,另外样式名别用standard
标注样式属性有待改建
带有文字和标注的样式会丢 这是好东西啊,谢谢楼主分享。 谢谢楼主分享{:1_1:} 谢谢楼主分享
谢谢楼主分享 样式bug已修符 谢谢楼主分享
页:
[1]
2