yangchao2005090 发表于 2019-5-24 08:24:09

【已解决】Diesel表达式提取文件名

本帖最后由 yangchao2005090 于 2019-5-26 11:17 编辑

cad中提取图号和文件名格式:
工程,STX0701-002,平面布置图
表达式分别是
$(index,0,$(substr,$(getvar,dwgname),1[,$(-,$(strlen,$(getvar,dwgname)),4)]))

$(index,1,$(substr,$(getvar,dwgname),1[,$(-,$(strlen,$(getvar,dwgname)),4)]))


$(index,2,$(substr,$(getvar,dwgname),1[,$(-,$(strlen,$(getvar,dwgname)),4)]))

但是院里要求文件名格式:(,改空格,请问上面代码这个改怎么改一下呀)
工程 STX0701-002 平面布置图


lostbalance 发表于 2019-5-24 09:12:12

不懂diesel,大概推测下楼主的意思,是根据dwg的文件名来读取相关信息,原来的文件名是用逗号分隔的,现在改为空格分隔。
百度了下diesel以及index
dieselAUTOCAD中自定义宏语言。使用的DIESEL可以控制AutoCAD系统变量MODEMACRO的值,也可用来编写菜单宏,但只能用来处理字符串。
index
返回以逗号分隔的字符串中的指定成员。$(index,which,string)假定string参数包含一个或多个由宏参数分隔符字符(逗号)分隔的值。which参数选择这些值中的一个值进行提取,第一项编号为0。此函数通常用于从$(getvar)返回的点坐标中提取X、Y或Z坐标值。使用此函数,应用程序可从USERS1-5系统变量中检索存储为以逗号分隔的字符串的值。
这个index是强制以逗号做分隔符的,建议找一下diesel里面有没有替换字符的函数,先把空格换成逗号,然后再用原来的表达式。

yangchao2005090 发表于 2019-5-24 09:18:58

lostbalance 发表于 2019-5-24 09:12
不懂diesel,大概推测下楼主的意思,是根据dwg的文件名来读取相关信息,原来的文件名是用逗号分隔的,现在 ...

谢谢,这个不是很懂

xyp1964 发表于 2019-5-24 23:08:25


(setq fn(vl-filename-base (getvar 'dwgname))
      lst (xyp-Str2Lst (xyp-String-Subst " " "," fn))
)

1291500406 发表于 2019-5-24 23:22:25

本帖最后由 1291500406 于 2020-7-27 07:55 编辑

字段表达式挺难









yangchao2005090 发表于 2019-5-25 08:33:47

1291500406 发表于 2019-5-24 23:22
http://www.fourmilab.ch/diesel/




http://bbs.mjtd.com/thread-179597-1-1.html
这个可以帮忙看一下吗
页: [1]
查看完整版本: 【已解决】Diesel表达式提取文件名