乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
楼主: be_bo

[编程交流] 从pa中减去文件名

[复制链接]

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 10:48:15 | 显示全部楼层
谢谢:)
回复

使用道具 举报

2

主题

8

帖子

6

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 10:50:09 | 显示全部楼层
谢谢李的代码,也谢谢你让我知道!
您向我解释了为什么当PDF文件名长度设置与DWG文件名不同时,在我使用
(substr pdf\u name 1(-strlen pdf\u name)(strlen(getvar“dwgname”)))
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-6 10:52:01 | 显示全部楼层
 
我为这件事道歉。。我想得太多了。。。。。。。吸取的教训
 
“我们去你的房间!!!!!”
回复

使用道具 举报

11

主题

968

帖子

919

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
99
发表于 2022-7-6 10:55:57 | 显示全部楼层
另一个问题是,文件名(甚至文件夹名)可能不止一个点。它们也可能根本没有任何扩展。
试试这些:
 
[列表]
  • (拆分路径“c:\\testpath/subfolder\\file.name.ext”)
  • (拆分路径“c:\\testpath/sub.folder\”)
  • (拆分路径“c:\\testpath/sub.folder\\filename”)
    [/列表]
  • 回复

    使用道具 举报

    pBe

    32

    主题

    2722

    帖子

    2666

    银币

    后起之秀

    Rank: 20Rank: 20Rank: 20Rank: 20

    铜币
    211
    发表于 2022-7-6 10:58:49 | 显示全部楼层
    1. (substr pdf_name 1 (- (strlen pdf_name)
    2.        (+ (- (strlen pdf_name) (strlen (getvar "dwgprefix")))1 )))

     
    这个怎么样
    回复

    使用道具 举报

    11

    主题

    968

    帖子

    919

    银币

    初露锋芒

    Rank: 3Rank: 3Rank: 3

    铜币
    99
    发表于 2022-7-6 11:02:48 | 显示全部楼层
    同样,这假设您尝试从中提取的路径与图形位于同一文件夹中。根据DWGNAME变量,这是一个类似的问题。
    回复

    使用道具 举报

    pBe

    32

    主题

    2722

    帖子

    2666

    银币

    后起之秀

    Rank: 20Rank: 20Rank: 20Rank: 20

    铜币
    211
    发表于 2022-7-6 11:05:15 | 显示全部楼层
    是的,我知道。。。。我应该呆在我的房间里
     
    令人沮丧的是,我应该克制自己不回答问题,坚持只问问题。
    回复

    使用道具 举报

    114

    主题

    1万

    帖子

    1万

    银币

    中流砥柱

    Rank: 25

    铜币
    543
    发表于 2022-7-6 11:09:27 | 显示全部楼层
     
    Irneb,
     
    标准函数(如我前面所列)应该正确处理这些情况-它们不在您的系统上吗?
    回复

    使用道具 举报

    114

    主题

    1万

    帖子

    1万

    银币

    中流砥柱

    Rank: 25

    铜币
    543
    发表于 2022-7-6 11:11:46 | 显示全部楼层
    你的函数引起了Irneb的兴趣,也许另一种编写方法是:
     
    1. (defun LM:fnsplitl ( fn / sub )
    2. (defun _sub ( s l / p )
    3.    (if (and l (setq p (vl-string-position (car l) s nil t)))
    4.      (cons (substr s 1 p) (_sub (substr s (+ 2 p)) (cdr l)))
    5.      (list s)
    6.    )
    7. )
    8. (_sub (vl-string-translate "/" "\" fn) '(92 46))
    9. )

     
    或迭代版本:
     
    1. 7
    回复

    使用道具 举报

    11

    主题

    968

    帖子

    919

    银币

    初露锋芒

    Rank: 3Rank: 3Rank: 3

    铜币
    99
    发表于 2022-7-6 11:14:18 | 显示全部楼层
    不,当你尝试做某事时,你会学得更快。你的“好”之处在于,你正努力使它尽可能简单高效。不幸的是,它并不适用于所有场景。 
    我知道,只是为了那些不想要vla的东西,但仍然希望它能在所有可能性上发挥作用的人wink:编辑:我的代码也使用vl的东西,但这是可以改变的。。。
     
    在几乎所有情况下,我都建议使用迭代版本而不是递归。虽然递归可以实现短n-sweet编码,但如果不完全正确,它也不是最有效的。 
    请参阅此帖子:http://devlicio.us/blogs/christopher_bennage/archive/2010/09/14/what-is-functional-programming-part-3-recursion.aspx
     
    注意关于尾部调用优化的讨论。如果您的函数不这样做,Lisp解释器将进行大量的CPU调用和RAM寻址,只是为了逐步完成对同一函数的调用。我不确定AutoLisp是否像更现代的lisp编译器/解释器那样优化了这些调用。
    回复

    使用道具 举报

    发表回复

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    • 微信公众平台

    • 扫描访问手机版

    • 点击图片下载手机App

    QQ|关于我们|小黑屋|乐筑天下 繁体中文

    GMT+8, 2025-7-5 21:56 , Processed in 0.681322 second(s), 70 queries .

    © 2020-2025 乐筑天下

    联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表