乐筑天下

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

[编程交流] 插入带有LISP not wor的块

[复制链接]

1

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 12:29:38 | 显示全部楼层 |阅读模式
嘿,社区新手,虽然对VBA、autolisp cuis等有点经验。。。
对不起,如果我在这里的咆哮听起来有点混乱
 
我发现有人和我有类似的问题,但没有解决办法。
http://www.cadtutor.net/forum/showthread.php?t=40367
 
我有一个非常简单的脚本,它设置了一些参数,然后插入一个块,已经运行了很多年了
 
但在这张图上,它进入了块的插入,要求x比例,并重复我在使用工具栏lisp命令之前所做的任何命令。
 
如果我打开一个新的绘图或任何其他已绘制的绘图,插入效果很好,但在这张绘图中它不会,我可以重新开始绘图,但这让我发疯!
 
您可以在下面看到我的命令提示符的副本,以及它尝试执行我的最后一个命令的位置(即第行)
如果有人有想法,请告诉我
 
 
命令:(load“05-02-03”)正交输入模式[开/关]:开
命令:输入New、Existing、removing或Future?[新]n
-图层
当前层:“T-Data-Devc-Wall-N”
输入选项
[?/Make/Set/New/ON/OFF/Color/Ltype/LWeight/MATerial/Plot/PStyle/Freeze/Thaw/LOck
/解锁/状态]:s
输入要置为当前的图层名或:T-Data-Devc-Wall-N Enter
A选项
[?/Make/Set/New/ON/OFF/Color/Ltype/LWeight/MATerial/Plot/PStyle/Freeze/Thaw/LOck
/解锁/状态]:
命令:插入点
插入输入块名或[?]:05-02-03-NW。图纸
单位:英寸换算:0'-1“
指定插入点或[基点/比例/X/Y/Z/旋转]:
输入X比例因子,指定对角点或[角点/XYZ]:
命令:LINE指定第一个点:nil
指定第一点:*取消*
 
 
  1. ;Wall-Mounted Data Devices
  2. ;A.ARNONE
  3. ;UPDATED (7.11.06)
  4. ;start variable definition
  5.    (setq usr3 (* (getvar "userr3")))
  6.    (if (= usr3 3600.0) (setq r3 50))
  7.    (if (= usr3 2400.0) (setq r3 25))
  8.    (if (= usr3 1200.0) (setq r3 12.5))
  9.    (IF (= USR3 600.0)  (setq r3 6.25))
  10.    (if (= usr3 480.0)  (setq r3 5))
  11.    (if (= usr3 360.0)  (setq r3 3.75))
  12.    (if (= usr3 240.0)  (setq r3 2.5))
  13.    (if (= usr3 120.0)  (setq r3 1.25))
  14.    (IF (= USR3 384.0)  (SETQ r3 4))
  15.    (IF (= USR3 192.0)  (SETQ r3 2))
  16.    (IF (= USR3 128.0)  (SETQ r3 1.33333333333))
  17.    (IF (= USR3 96.0)   (SETQ r3 1))
  18.    (IF (= USR3 64.0)   (SETQ r3 0.666666666667))
  19.    (IF (= USR3 48.0)   (SETQ r3 0.5))
  20.    (IF (= USR3 32.0)   (SETQ r3 0.333333333333))
  21.    (IF (= USR3 24.0)   (SETQ r3 0.25))
  22.    (IF (= USR3 16.0)   (SETQ r3 0.166666666667))
  23.    (IF (= USR3 12.0)   (SETQ r3 0.125))
  24.    (IF (= USR3 8.0)    (SETQ r3 0.083333333333))
  25.    (IF (= USR3 4.0)    (SETQ r3 0.041666666667))
  26.    (IF (= USR3 2.0)    (SETQ r3 0.020833333333))
  27.    (IF (= USR3 1.0)    (SETQ r3 0.010416666667))
  28.    (IF (= USR3 0)      (SETQ r3 1))
  29.    (setq newlayer "T-Data-Devc-Wall-N")
  30.    (setq newlayercolor "3")
  31.    (setq newlayerlineweight "0.50")
  32.    (setq newlayerlinetype "Continuous")
  33.    (setq newlayerplotstyle "Black")
  34.    (setq lookupnew (tblsearch "LAYER" newlayer))
  35.    (setq atriblocknw "05-02-03-NW.dwg")
  36. ;end variable definition
  37.    
  38.    (command "ortho" "on")
  39. ;Sets Working Layer
  40.    (setq workinglayer (GETSTRING "Enter <N> New, <E> Existing, <D> Demolition, or <F> Future? [NEW]")) (terpri)
  41.    (cond  
  42.        ((= workinglayer "N")
  43.            ;checks and/or defines layer to draw on
  44.            (if (= lookupnew nil)
  45.                (command "-layer" "n" newlayer "s" newlayer "C" newlayercolor "" "L" newlayerlinetype "" "Lw" newlayerlineweight "" "PS"                     newlayerplotstyle "" "")
  46.                (command "-layer" "s" newlayer "")
  47.                ); END IF
  48.                    ;Sets P1 TO start point of Receptacle and Inserts Block
  49.                    (prompt "Insertion Point") (terpri)
  50.                    (setq p1 (getpoint))
  51.                    (command "insert" atriblocknw p1 r3 "")
  52.        )
  53.        ((= workinglayer "n")
  54.            ;checks and/or defines layer to draw on
  55.            (if (= lookupnew nil)
  56.                (command "-layer" "n" newlayer "s" newlayer "C" newlayercolor "" "L" newlayerlinetype "" "Lw" newlayerlineweight "" "PS"                     newlayerplotstyle "" "")
  57.                (command "-layer" "s" newlayer "")
  58.                ); END IF
  59.                    ;Sets P1 TO start point of Receptacle and Inserts Block
  60.                    (prompt "Insertion Point") (terpri)
  61.                    (setq p1 (getpoint))
  62.                    (command "insert" atriblocknw p1 r3 "")
  63.        )
  64.        ((= workinglayer "")
  65.            ;checks and/or defines layer to draw on
  66.            (if (= lookupnew nil)
  67.                (command "-layer" "n" newlayer "s" newlayer "C" newlayercolor "" "L" newlayerlinetype "" "Lw" newlayerlineweight "" "PS"                     newlayerplotstyle "" "")
  68.                (command "-layer" "s" newlayer "")
  69.                ); END IF
  70.                    ;Sets P1 TO start point of Receptacle and Inserts Block
  71.                    (prompt "Insertion Point") (terpri)
  72.                    (setq p1 (getpoint))
  73.                    (command "insert" atriblocknw p1 r3 "")
  74.        )
  75.    );end condition
回复

使用道具 举报

14

主题

271

帖子

257

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
70
发表于 2022-7-6 12:42:14 | 显示全部楼层
您好,欢迎来到论坛。
 
因为您的问题只发生在一个图形中,我想知道您是否在命令提示符中键入(getvar“userr3”)输出是否等于代码顶部的if语句之一?
 
此外,为了让事情更清楚,我更新了你的代码;在此处设置工作层。
 
  1. ;Wall-Mounted Data Devices
  2. ;A.ARNONE
  3. ;UPDATED (7.11.06)
  4. ;start variable definition
  5.    (setq usr3 (* (getvar "userr3")))
  6.    (if (= usr3 3600.0) (setq r3 50))
  7.    (if (= usr3 2400.0) (setq r3 25))
  8.    (if (= usr3 1200.0) (setq r3 12.5))
  9.    (IF (= USR3 600.0)  (setq r3 6.25))
  10.    (if (= usr3 480.0)  (setq r3 5))
  11.    (if (= usr3 360.0)  (setq r3 3.75))
  12.    (if (= usr3 240.0)  (setq r3 2.5))
  13.    (if (= usr3 120.0)  (setq r3 1.25))
  14.    (IF (= USR3 384.0)  (SETQ r3 4))
  15.    (IF (= USR3 192.0)  (SETQ r3 2))
  16.    (IF (= USR3 128.0)  (SETQ r3 1.33333333333))
  17.    (IF (= USR3 96.0)   (SETQ r3 1))
  18.    (IF (= USR3 64.0)   (SETQ r3 0.666666666667))
  19.    (IF (= USR3 48.0)   (SETQ r3 0.5))
  20.    (IF (= USR3 32.0)   (SETQ r3 0.333333333333))
  21.    (IF (= USR3 24.0)   (SETQ r3 0.25))
  22.    (IF (= USR3 16.0)   (SETQ r3 0.166666666667))
  23.    (IF (= USR3 12.0)   (SETQ r3 0.125))
  24.    (IF (= USR3 8.0)    (SETQ r3 0.083333333333))
  25.    (IF (= USR3 4.0)    (SETQ r3 0.041666666667))
  26.    (IF (= USR3 2.0)    (SETQ r3 0.020833333333))
  27.    (IF (= USR3 1.0)    (SETQ r3 0.010416666667))
  28.    (IF (= USR3 0)      (SETQ r3 1))
  29.    (setq newlayer "T-Data-Devc-Wall-N")
  30.    (setq newlayercolor "3")
  31.    (setq newlayerlineweight "0.50")
  32.    (setq newlayerlinetype "Continuous")
  33.    (setq newlayerplotstyle "Black")
  34.    (setq lookupnew (tblsearch "LAYER" newlayer))
  35.    (setq atriblocknw "05-02-03-NW.dwg")
  36. ;end variable definition
  37.    
  38.    (command "ortho" "on")
  39. ;Sets Working Layer
  40.    [color=Blue](initget "New Existing Demolition Future")
  41.    (setq workinglayer (getKWord "\nEnter <N> New, <E> Existing, <D> Demolition, or <F> Future? [NEW]: "))
  42.    (cond  
  43.        ((or (not workinglayer) (eq workinglayer "New"))
  44.            ;checks and/or defines layer to draw on
  45.            (if (= lookupnew nil)
  46.                (command "_-layer" "n" newlayer "s" newlayer "C" newlayercolor "" "L" newlayerlinetype "" "Lw" newlayerlineweight "" "PS"                     newlayerplotstyle "" "")
  47.                (command "_-layer" "s" newlayer "")
  48.                ); END IF
  49.     ;Sets P1 TO start point of Receptacle and Inserts Block
  50.     (setq p1 (getpoint "\nGet Insertion Point: "))
  51.     (command "_-insert" atriblocknw p1 r3 "")
  52.     )
  53.    );end condition[/color]
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:51:04 | 显示全部楼层
快速提示-我会使用COND statment来代替所有这些IF,这将使程序更快,并且是更好的编程实践。
回复

使用道具 举报

14

主题

271

帖子

257

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
70
发表于 2022-7-6 12:59:28 | 显示全部楼层
我同意。
因此,不是:
你可以把:
末尾突出显示的位是,如果不满足任何条件,则它会将r3(您的刻度)设置为1。我认为这是你的问题。
 
如果您需要进一步了解条件语句,请查看http://www.cadtutor.net/forum/showpost.php?p=173196
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 13:04:56 | 显示全部楼层
这里还有一个“错误”——我说“错误”,它不会抛出错误,但没有必要
 
你为什么要使用USERR3?
回复

使用道具 举报

1

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 13:18:53 | 显示全部楼层
Steve1!非常感谢。你的第一个帖子让我意识到出了什么问题
我的userr3在整个if语句中并没有任何选项
所以我要把它改成一个计算usr3的公式,这样就没有问题了
 
谢谢大家的帮助,我以后会记住这一点,但是因为我不再使用一百万个if语句了,很好的摆脱了!
 
李-你问我为什么使用userr3
我们有一个脚本,可以在其中设置图形的比例,我们将比例放入userr3设置中,然后如果需要比例,我们的所有其他脚本都引用userr3
 
我没有写所有这些原始脚本,我想知道,有没有更简单的方法来查找和设置图形的比例(例如进入图形设置页面的值低于比例)
 
我尝试了dimscale,但这似乎不会影响绘图设置下的比例
 
如果我可以直接找到/设置绘图的比例,我就可以避免整个userr3的事情
回复

使用道具 举报

14

主题

271

帖子

257

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
70
发表于 2022-7-6 13:22:34 | 显示全部楼层
很高兴解决了主要问题。
 
关于获取/设置比例,您是在谈论绘图比例吗?我不知道是否有分配给它的系统变量。也许试着在论坛的另一个部分问这个问题。。。
回复

使用道具 举报

14

主题

271

帖子

257

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
70
发表于 2022-7-6 13:36:56 | 显示全部楼层
我可以问你朱比,你会在哪里手动设置绘图比例吗?即你的userr3值。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-5 06:30 , Processed in 0.427574 second(s), 79 queries .

© 2020-2025 乐筑天下

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