小菜大师选择易出错卡死的问题
用小菜大师的选择易,选择这种图块会出错。出错的语句是:(vl-prin1-to-string '(("校对人_签名" "校对人_签名") ((SS-SEL_LAY "属性标志多选" (QUOTE ("校对人_签名" "会签人_建筑" "审核人_签名" "审定人_签名" "会签人_结构" "会签人_给排水" "会签人_电气" "会签人_暖通" "会签人_其他" "出图负责人章" "注册师章" "出图章" "专业负责人_签名" "设计人_签名" "版本号" "日期" "阶段" "专业" "子项编号" "工程编号" "子项名称" "工程名称" "比例" "图幅" "图名" "图号")) "txtFJ6") "属性标志多选...") ("会签人_建筑" "会签人_建筑") ("审核人_签名" "审核人_签名") ("审定人_签名" "审定人_签名") ("会签人_结构" "会签人_结构") ("会签人_给排水" "会签人_给排水") ("会签人_电气" "会签人_电气") ("会签人_暖通" "会签人_暖通") ("会签人_其他" "会签人_其他") ("出图负责人章" "出图负责人章") ("注册师章" "注册师章") ("出图章" "出图章") ("专业负责人_签名" "专业负责人_签名") ("设计人_签名" "设计人_签名") ("版本号" "版本号") ("日期" "日期") ("阶段" "阶段") ("专业" "专业") ("子项编号" "子项编号") ("工程编号" "工程编号") ("子项名称" "子项名称") ("工程名称" "工程名称") ("比例" "比例") ("图幅" "图幅") ("图名" "图名") ("图号" "图号")))但是类似的语句就不出会出错:(vl-prin1-to-string '(("会签人_其他" "会签人_其他") ((SS-SEL_LAY "属性标志多选" (QUOTE ("会签人_其他" "会签人_暖通" "会签人_电气" "会签人_给排水" "会签人_结构" "版本号" "日期" "阶段" "专业" "子项编号" "工程编号" "子项名称" "工程名称" "比例" "审定人_签名" "审核人_签名" "会签人_建筑" "校对人_签名" "图幅" "图名" "图号")) "txtFJ6") "属性标志多选...") ("会签人_暖通" "会签人_暖通") ("会签人_电气" "会签人_电气") ("会签人_给排水" "会签人_给排水") ("会签人_结构" "会签人_结构") ("版本号" "版本号") ("日期" "日期") ("阶段" "阶段") ("专业" "专业") ("子项编号" "子项编号") ("工程编号" "工程编号") ("子项名称" "子项名称") ("工程名称" "工程名称") ("比例" "比例") ("审定人_签名" "审定人_签名") ("审核人_签名" "审核人_签名") ("会签人_建筑" "会签人_建筑") ("校对人_签名" "校对人_签名") ("图幅" "图幅") ("图名" "图名") ("图号" "图号")))
附上出图的文件,请问怎么改才能用呢。 没有发现出错,2006~2008版本的CAD vl-prin1-to-string函数有bug,不能打印太长的中文 有好几个版本 小菜123 发表于 2024-12-21 09:27
没有发现出错,2006~2008版本的CAD vl-prin1-to-string函数有bug,不能打印太长的中文
小菜大师,感谢你的回复! 我用的是2012版本的cad,应该确实是vl-prin1-to-string函数的bug。上图的问题应该就是属性太多了导致的问题。按你的提示我把你的这个函数改了一下,把表拆分打印成子串后再连接起来就不会出错了:
(defun ss-mkstr ( tmp / STR )
(cond
((= (type tmp) 'STR) (setq strtmp))
((= (type tmp) 'LIST) (setq str(strcat "(" ( vl-string-right-trim" " (apply 'strcat (mapcar '(lambda(x) (strcat (vl-prin1-to-string x)" ")) tmp) ) ) ")")))
( T (setq str(vl-prin1-to-string tmp)))
)
STR
) 但是对于特殊的文字,比如内容如下的单行文字,还是会出错: (vl-prin1-to-string '(("校对人_签名" "校对人_签名") ((SS-SEL_LAY "属性标志多选" (QUOTE ("校对人_签名" "会签人_建筑" "审核人_签名" "审定人_签名" "会签人_结构" "会签人_给排水" "会签人_电气" "会签人_暖通" "会签人_其他" "出图负责人章" "注册师章" "出图章" "专业负责人_签名" "设计人_签名" "版本号" "日期" "阶段" "专业" "子项编号" "工程编号" "子项名称" "工程名称" "比例" "图幅" "图名" "图号")) "txtFJ6") "属性标志多选...") ("会签人_建筑" "会签人_建筑") ("审核人_签名" "审核人_签名") ("审定人_签名" "审定人_签名") ("会签人_结构" "会签人_结构") ("会签人_给排水" "会签人_给排水") ("会签人_电气" "会签人_电气") ("会签人_暖通" "会签人_暖通") ("会签人_其他" "会签人_其他") ("出图负责人章" "出图负责人章") ("注册师章" "注册师章") ("出图章" "出图章") ("专业负责人_签名" "专业负责人_签名") ("设计人_签名" "设计人_签名") ("版本号" "版本号") ("日期" "日期") ("阶段" "阶段") ("专业" "专业") ("子项编号" "子项编号") ("工程编号" "工程编号") ("子项名称" "子项名称") ("工程名称" "工程名称") ("比例" "比例") ("图幅" "图幅") ("图名" "图名") ("图号" "图号")))
不过一般没有这种内容的文字,所以也问题不大 2012的大概也有问题吧,试试更高版本的CAD。打印函数后来我也改了一下,没放进来 小菜123 发表于 2024-12-21 10:36
2012的大概也有问题吧,试试更高版本的CAD。打印函数后来我也改了一下,没放进来
确实如您说说, 用CAD2019就没有问题了。
修改后的打印函数能发吗?我这个是瞎凑合的,有大师的原版最好了! 本帖最后由 xyp1964 于 2024-12-21 11:32 编辑
能直接这么用?
((SS-SEL_LAY
"属性标志多选"
'(("校对人_签名" "会签人_建筑" "审核人_签名" "审定人_签名" "会签人_结构" "会签人_给排水""会签人_电气" "会签人_暖通" "会签人_其他" "出图负责人章""注册师章" "出图章""专业负责人_签名""设计人_签名" "版本号""日期""阶段""专业" "子项编号" "工程编号" "子项名称" "工程名称" "比例""图幅" "图名""图号" ) )
"txtFJ6"
)
"属性标志多选..."
) 模仿小菜和飞诗写的,你的这个dwg效果是这样的. 黄翔 发表于 2024-12-21 11:46
模仿小菜和飞诗写的,你的这个dwg效果是这样的.
你这个看起来也很不错,对多属性支持很好!厉害!
页:
[1]
2