HasanCAD 发表于 2014-11-1 12:48:15

DIESEL: substr右起4个字符

此线程的连续http://www.theswamp.org/index.php?topic=48081.0;all
Can substr从右到左工作。
我们在文件名末尾添加了一个版本(R00, R01,...)。但不应该出现在dwg标题中。
文件名:3120B01-D-A101-R00
dwg标题:3120B01-D-A101
我创建了这个DIESEL Expresion,
$(substr,$(getvar,DWGNAME),1,14)
但并不是每次文件名都是18个字符,所以有没有办法从右开始substr 4个字符
**** Hidden Message *****

HasanCAD 发表于 2014-11-1 13:52:34

尝试:
$(substr,$(getvar,dwgname),1,$(-,$(strlen,$(getvar,dwgname)),8))

Crank 发表于 2014-11-1 14:30:21

工作完美,谢谢李
有链接解释柴油。

HasanCAD 发表于 2014-11-1 15:03:31

http://www.fourmilab.ch/diesel/
http://www.crlf.de/Dokumente/Diesel/Diesel.html

HasanCAD 发表于 2014-11-2 05:52:51


感谢曲柄

Kerry 发表于 2014-11-4 03:38:14


您能解释一下这个代码吗?删除4个字符和数字8之间有什么关系?
我认为这是文件扩展名和点和3个字符,是正确的吗?

HasanCAD 发表于 2014-11-4 04:00:29

在命令行中,什么是
(getvar 'dwgname)

(strlen (getvar 'dwgname))

(strlen "-R00.dwg")

( -(strlen (getvar 'dwgname )) 8)

(substr
   (getvar 'dwgname )
   1
   ( -(strlen (getvar 'dwgname )) 8)
)


评估起来真的很简单。

JohnK 发表于 2014-11-4 04:44:54


你能解释一下这个代码吗。删除4个字符和8个数字之间有什么关系?
我认为是文件扩展名和点和3个字符,正确吗?
正如Kerry所建议的,为了理解代码,最好评估每个表达式(从最内部的表达式向外开始),查看和了解每个表达式返回的值,以及该返回值如何传递给另一个表达式。
由于许多DIESEL表达式具有AutoLISP等价物,您可以评估等效的AutoLISP表达式(正如Kerry在上面建议的那样),或者,您可以使用
menucmd
函数直接评估DIESEL表达式,例如:
_$ (menucmd "m=$(getvar,dwgname)")
"Drawing1-R00.dwg"
_$ (menucmd "m=$(strlen,$(getvar,dwgname))")
"16"
_$ (menucmd "m=$(-,$(strlen,$(getvar,dwgname)),8)")
"8"
_$ (menucmd "m=$(substr,$(getvar,dwgname),1,$(-,$(strlen,$(getvar,dwgname)),8))")
"Drawing1"
关于减去8个字符以从绘图名称中删除4个字符,关键点
DWGNAME
系统变量将返回绘图文件名
,包括文件扩展名
-因此DIESEL表达式正在删除修订和文件扩展名:
"-R00.dwg"
=8个字符。

HasanCAD 发表于 2014-11-4 08:10:12

谢谢 Kerry
谢谢 Lee
OK,如何找出 DIESEL 和 Lisp 之间的常见表达方式?

mark 发表于 2014-11-4 08:46:06

翻译错误代码(429):请求 QPS 超过限制。
页: [1] 2
查看完整版本: DIESEL: substr右起4个字符