乐筑天下

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

[编程交流] Lisp程序请调整。。。

[复制链接]

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 07:17:27 | 显示全部楼层
 
我问的唯一原因是,我非常怀疑您是否能够“调整”LISP以进行多选,而不需要完全重新编写它。
 
正如我之前可能提到的那样,LISP使用nentsel方法选择实体,因此在用户选择时可以获得某些信息-使用实体选择的选择集方法无法轻松检索这些信息。
 
我正在考虑为你写一个类似的LISP,这就是为什么我问这个问题。你只是想增加属性中的数字,还是更多?
回复

使用道具 举报

7

主题

55

帖子

48

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-6 07:23:04 | 显示全部楼层
我使用您之前帮助我使用的lisp用这个块填充点。它们以数字顺序出现。一旦我放置了块,人们需要删除或添加到我已经做的块集。这会导致缺少数字,或者我需要添加更多数字。因此,找到编号最高的块可能是一件痛苦的事,而从某个数字开始重新编号同样很糟糕。我宁愿选择全部并告诉他们重新编号。这将是一种可靠的方法来防止相似或缺失数字。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 07:23:31 | 显示全部楼层
 
我可能在这里遗漏了一些关键的东西,但你难道不能使用你最初用来填充点的LISP(我帮助你的那个)来重新填充块吗?
回复

使用道具 举报

7

主题

55

帖子

48

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-6 07:29:07 | 显示全部楼层
我发现调整一些比重新调整许多更容易。随着工作的进行,我无法更改已被引用的块。在一个包含250个区块的cooridor中,工作人员可能已经使用这些区块建造了看台,参考号为215。我不能回去擦除块并重新填充点。由于填充lisp的随机性,编号模式可能会改变。现在我没有正确的数字来匹配他们的。因此,如果我被要求通过添加或删除其中的一些来更改其余的35个块,那么它们现在将失去顺序。我当前的方法是使用我当前的renum lisp依次选择每个剩余的块属性,以数字顺序更改它们。另一个问题是,我并不总是有原始点dwg重新填充,我将只有块dwg。我们的区块保存在与主图纸不同的单独图纸中。正如我所说,我喜欢我现在的Lisp程序的本质。我只想添加多个选项。
回复

使用道具 举报

7

主题

55

帖子

48

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-6 07:29:48 | 显示全部楼层
在这方面仍然需要帮助。有人接受吗?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 07:34:53 | 显示全部楼层
快速写下这篇文章-可能就是你想要的:
 
  1. (defun c:reNum (/ dCars tmpVars ss att)
  2. (setq dVars '(sNum inNum Pref Suff))
  3. (mapcar '(lambda (x y) (or (boundp x) (set x y))) dVars '(1 1 "" ""))
  4. (setq tmpVars (list (getreal (strcat "\nSpecify Starting Number <" (rtos sNum 2 2) ">: "))
  5.              (getreal (strcat "\nSpecify Increment <" (rtos inNum 2 2) ">: "))
  6.              (getstring t (strcat "\nSpecify Prefix <" (if (eq "" Pref) "-None-" Pref) ">: "))
  7.              (getstring t (strcat "\nSpecify Suffix <" (if (eq "" Suff) "-None-" Suff) ">: "))))
  8. (mapcar '(lambda (x y) (or (or (not x) (eq "" x)) (set y x))) tmpVars dVars)
  9. (while (not ss)
  10.    (princ "\nSelect Blocks to ReNumber... ")
  11.    (setq ss (ssget '((0 . "INSERT") (66 . 1)))))
  12. (foreach blk (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))
  13.    (setq att (entnext blk))
  14.    (while (not (eq "SEQEND" (cdadr (setq aLst (entget att)))))
  15.      (if (eq "POINT" (cdr (assoc 2 aLst)))
  16.    (entmod (subst (cons 1 (strcat Pref (rtos sNum) Suff)) (assoc 1 aLst) aLst)))
  17.      (setq att (entnext att)))
  18.    (setq sNum (+ sNum inNum)))
  19. (command "_regenall")
  20. (princ))
回复

使用道具 举报

7

主题

55

帖子

48

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-6 07:37:27 | 显示全部楼层
这没用,李。可能问题在于整个块的部分,而不仅仅是块中心的属性。只有当我选择属性而不是整个块本身时,我原来的lisp才起作用。所以我猜想,如果他们只是一种窗口选择属性的方法,这将更容易解决。
 
我只是想说清楚。在我引用的块中,在块中的三行文本中,只有中间的文本是属性。其他行(顶部和底部)仅为Dtext。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 07:39:13 | 显示全部楼层
 
我的道歉,伙计,在里面留下了一个旧的属性名称代码已更新
回复

使用道具 举报

7

主题

55

帖子

48

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-6 07:43:03 | 显示全部楼层
你好由于此Lisp在ACAD 2008(仅2006年)中不起作用,我重新访问了此线程。此外,我仍然无法同时使用属性对多个块重新编号。
 
正如现在(在ACAD-2006中)一样,Lisp要求我必须高亮显示属性本身,而不接触块的任何其他部分,否则命令将结束。
 
我的理想Lisp将在ACAD-2008中工作,并使我能够一次通过窗口选择多个块进行重新编号。我喜欢现有lisp的基本结构。我只需要对它进行一些调整。谢谢李为我提供了原来的Lisp程序。
 
在上面的线程中是“renum.lsp”和ACAD-2000-Points块图纸。
 
谢谢你的帮助。
回复

使用道具 举报

88

主题

346

帖子

281

银币

后起之秀

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

铜币
423
发表于 2022-7-6 07:45:45 | 显示全部楼层
有人能解释一下吗??
 
(initget“Yes NoÄ�* Íåòu Yes No Yes No”)
 
我很困惑!!
 
谢谢!
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 14:48 , Processed in 0.366874 second(s), 70 queries .

© 2020-2025 乐筑天下

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