Jadeous 发表于 2022-7-6 12:04:13

旧Lisp不';t工作于

大家好,
 
我有一个旧的Lisp程序写了一个善良的人从这个网站,(谢谢李Mac)。我在ACAD 2006中使用了这个lisp,效果很好!现在,我的公司已经转移到ACAD 2008,lisp不再正常工作。我猜可能是某个命令的文本在从06升级到08的过程中发生了变化。不太确定。
 
在ACAD 06中,lisp通过选择我正在使用的块的属性来工作。如果选择块的任何其他部分,则命令结束。此外,我一次只能选择一个区块。当我需要更换数百个时,这可能会很耗时。但是lisp仍然非常有用。
 
 
 
 
尽管如此,我有两个目标。
[列表]
[*]在ACAD 2008中找到使此lisp工作的方法。即使Lisp程序的能力没有改变,只要能够在08年使用它将是非常有益的。
[*]下一步是询问某人是否感觉自己像青蛙一样,能够找到一种方法来调整lisp,以便能够一次抓住几个块进行重新编号。重新编号顺序可以是随机的。
我附加了lisp例程和我使用它的块。块的属性部分是中心文本,另一个文本是Dtext。我还将其保存在ACAD 2000版本中。
 
P、 我重写了这个帖子,这样我可以更好地总结我想找到的东西,而不是重复帖子。
雷纳姆。lsp
ACAD点块。图纸

Lee Mac 发表于 2022-7-6 12:09:51

Jadeous-
 
你看到我最近在你的另一个帖子上的帖子了吗?
 
编辑>你确定是我写的Lisp程序。。。看起来不像我要写的东西。。。

Jadeous 发表于 2022-7-6 12:12:34

是的,我试过了。没有运气。这与你给我的06年效果很好的那一个大不相同。

Jadeous 发表于 2022-7-6 12:14:08

我收到的错误是-“错误。无法pase文本。”

Lee Mac 发表于 2022-7-6 12:18:29

如果在块中选择除属性之外的任何内容,LISP当然会失败,因为它使用nentsel进行选择。
 
但是我看不出这个Lisp程序在你的另一个帖子中发布的reNum上实现了什么。。。

Jadeous 发表于 2022-7-6 12:21:23

在原始线程中,较长的lisp(由于缺乏更好的描述,附加到此线程的lisp)在06中运行良好。我从来没用过的那个短的。我坚持了更长的时间,因为它奏效了。
 
所以现在我只需要弄清楚当我切换到ACAD 2008时它为什么停止工作。即使它的工作原理与06完全相同,我也没问题。关于同时选择多个的另一部分,可以等待。我只需要能够像2006年ACAD那样使用它。

Lee Mac 发表于 2022-7-6 12:23:28

这就是我要说的——我在你的另一个线程中发布的代码应该可以按要求工作,具有多个块选择。
 
如果你还没有试过,那么就没有必要再继续了。

Jadeous 发表于 2022-7-6 12:28:02

我试过短一点的。它以回复结束,什么都没有发生。所有区块均未编号。这就是为什么取而代之的是更长的一个。

Lee Mac 发表于 2022-7-6 12:31:27

 
 
不应该有再生-你确定你正在尝试这个。

Jadeous 发表于 2022-7-6 12:34:12

对我试了一个。
 
让我们重新开始一会儿。。。。这让人非常困惑。
 
这是我唯一使用的Renum lisp。。。我在ACAD 2008中需要的那个
 
(定义c:renum(/oldPref oldSuf oldStart curText curStr vlaObj keepText)
(vl load com)
(defun TTC_Paste(pasteStr keepText/nslLst vlaObj)
(如果(setq nslLst(nentsel“\n粘贴文本>>”))
(progn(cond
((和(=4(长度nslLst))
(=“DIMENSION”(cdr(assoc 0(entget(car(last nslLst)1072;а)а)а)а);结束和
(setq vlaObj(vlax ename->vla object(cdr(assoc-1(entget(car(last nslLst ϞϞ)Ϟ)))))
(setq oldStat(vla get Measurement vlaObj))
(如果是keepText
(如果(=(vla get TextOverride vlaObj)“”)
(setq pasteStr(strcat pasteStr(rtos oldStat(vla get UnitsFormat vlaObj)(vla get PrimaryUnitsPrecision vlaObj)))
(setq pasteStr(strcat pasteStr(vla get TextOverride vlaObj 107;)а)а)
(if(vl-catch-all-error-p(vl catch all apply’vla put TextOverride(list vlaObj pasteStr)))
(princ“\n无法粘贴。对象可能位于锁定层。”);结束条件#1
((和(=4(长度nslLst))
(=“ACAD_TABLE”(cdr(assoc 0(entget(car(last nslLst k)а)а))));结束和
(setq vlaObj(vlax ename->vla对象(car nslLst)))
(if keepText(setq pasteStr(strcat pasteStr(vla get TextString vlaobj)))
(if(vl-catch-all-error-p(vl catch all apply’vla put TextString(list vlaObj pasteStr)))
(普林斯“\n错误。无法pase文本。”)(entupd(car(last nslLstkа)а));结束条件#2
((和(=4(长度nslLst))
(=“INSERT”(cdr(assoc 0(entget(car(last nslLst)1072;а)а)а)а);结束和
(princ“\n无法粘贴到块的DText或MText。”);结束条件#3
((和(=2(长度nslLst))
(成员(cdr(assoc 0(entget(car nslLst)))'(“TEXT”“MTEXT”“ATTRIB”“ATTDEF”)));结束和
(setq vlaObj(vlax ename->vla对象(car nslLst)))
(if keepText(setq pasteStr(strcat pasteStr(vla get TextString vlaobj)))
(if(vl-catch-all-error-p(vl catch all apply’vla put TextString(list vlaObj pasteStr)))
(princ“\n错误。无法传递文本。”);结束条件#4
(T(princ“\n无法粘贴。无效对象。”);结束条件#5
); 结束条件
T) ;结束程序
无);如果结束
);_TTC_粘贴
(setq aDoc(vla get ActiveDocument(vlax get acad object)))
(vla StartUndoMark aDoc)
(if(非rnm:Pref)(setq rnm:Pref“”)(if(非rnm:Suf)(setq rnm:Suf“”))
(如果(非rnm:启动)(setq rnm:启动1))
(setq oldPref rnm:Pref oldSuf rnm:Suf oldStart rnm:Start);结束setq
(setq rnm:Pref(getstring T(strcat“\n类型前缀:”))
(if(=“”rnm:Pref)(setq rnm:Pref oldPref))(if(=“”rnm:Pref)(setq rnm:Pref“”)
(setq rnm:Suf(getstring T(strcat“\n类型后缀:”))
(如果(=“”rnm:Suf)(setq rnm:Suf oldSuf));(如果(=“”rnm:Suf)(setq rnm:Suf“”)
(setq rnm:Start(输入起始编号
(itoa rnm:开始)“>:”)
(如果(null rnm:启动)(setq rnm:启动oldStart))
(initget“Yes NoÄ
页: [1] 2
查看完整版本: 旧Lisp不';t工作于