diesel的lisp版本
你好我正在寻找这个diesel表达式的lisp版本:
%%
它获取文件名的最后一个字符。XXXXX-A(A版)
文件名长度可能不同,因此我希望它从头到尾计数。
谢谢
PmxCAD
你从头到尾是什么意思?它是指基本文件名吗?
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)
)
)
干杯 (chr (last (vl-string->list (vl-filename-base (getvar 'dwgname)))))
((lambda (fn) (substr fn (strlen fn))) (vl-filename-base (getvar 'dwgname))) ... 另一个保留文件扩展名,考虑到OP对最后一个字符的请求:
(defun _GetRevision (dwgName / i)
;; Example: (_GetRevision "XXXXX-A.dwg")
;; Returns: "A"
(if (setq i (vl-string-search "." dwgName))
(substr dwgName i 1)
)
)
另一个类似于斯特凡的建议:
(apply '(lambda ( a b c ) (substr b (strlen b))) (fnsplitl (getvar 'dwgname))) 是的,它工作,但它只适用于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
您没有使用AUTOMATICPUB==1。 AUTOMATICPUB?
这个变量是什么?
pmxcad
它启用/禁用了2009年首次实现的自动发布机制。。。我每天都用它来制作计划,每次我保存一张图纸时都会生成一个PDF,甚至用它来定制行为。
HTH公司
页:
[1]
2