pmxcad 发表于 2022-7-5 22:28:28

diesel的lisp版本

你好
我正在寻找这个diesel表达式的lisp版本:
%%
 
它获取文件名的最后一个字符。XXXXX-A(A版)
文件名长度可能不同,因此我希望它从头到尾计数。
 
谢谢
 
PmxCAD

Tharwat 发表于 2022-7-5 22:37:37

 
你从头到尾是什么意思?它是指基本文件名吗?

BlackBox 发表于 2022-7-5 22:42:05

 
LISP翻译为:
 

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

 
 
然而,使用LISP的一个优点是能够更有效地测试条件,并利用变量/参数和子函数:
 

(vl-load-com)

(defun _GetRevision (dwgName / i)
;; Example: (_GetRevision "XXXXX-A.dwg")
;; Returns: "A"
(if (setq i (vl-string-search "-" dwgName))
   (substr dwgName (+ 2 i) 1)
)
)

 
 
 
干杯

Stefan BMR 发表于 2022-7-5 22:45:47

(chr (last (vl-string->list (vl-filename-base (getvar 'dwgname)))))
((lambda (fn) (substr fn (strlen fn))) (vl-filename-base (getvar 'dwgname)))

BlackBox 发表于 2022-7-5 22:50:49

... 另一个保留文件扩展名,考虑到OP对最后一个字符的请求:
 

(defun _GetRevision (dwgName / i)
;; Example: (_GetRevision "XXXXX-A.dwg")
;; Returns: "A"
(if (setq i (vl-string-search "." dwgName))
   (substr dwgName i 1)
)
)

Lee Mac 发表于 2022-7-5 22:55:52

另一个类似于斯特凡的建议:
(apply '(lambda ( a b c ) (substr b (strlen b))) (fnsplitl (getvar 'dwgname)))

pmxcad 发表于 2022-7-5 22:59:00

是的,它工作,但它只适用于1个标签。
我在脚本中使用它来打印到pdf。使用文件名中的活动布局选项卡名称和修订版创建pdf。(tabname-A.PDF)
 
下一个选项卡出错。
脚本在完成之前停止。
数据似乎保留在内存中。
 
我做错了什么?
 
PmxCAD
 
 
 
(setq Revision (substr (getvar 'dwgname) (- (strlen (getvar 'dwgname)) 5) 2))
(setq DwgN (getvar "CTAB"))
(setq Fname (substr DwgN 1 (- (strlen DwgN)0)))
(setq name (strcat (getvar "DWGPREFIX") Fname Revision".pdf"))
-plot




!name


BlackBox 发表于 2022-7-5 23:04:50

 
您没有使用AUTOMATICPUB==1。

pmxcad 发表于 2022-7-5 23:12:20

AUTOMATICPUB?
这个变量是什么?
 
pmxcad

BlackBox 发表于 2022-7-5 23:17:24

 
它启用/禁用了2009年首次实现的自动发布机制。。。我每天都用它来制作计划,每次我保存一张图纸时都会生成一个PDF,甚至用它来定制行为。
 
HTH公司
页: [1] 2
查看完整版本: diesel的lisp版本