Koalbee 发表于 2022-7-6 09:49:25

简单lisp命令-Dimscale

你好
我不太会写lisp。
 
如何获取lisp以确定当前的dimscale并插入
作为dimscale的倍数插入的块?
 
以下是当前的lisp:
 
(定义c:2011插入sm()
(setq clay(getvar“clayer”))
(setq*错误*我的错误)
(命令“-layer”“m”“025txt”“”)
(命令“insert”“Dynamic\u Section\u Mark-2009”pause“1”1 0)
(setvar“clayer”粘土)
(普林斯)
)
 
 
提前感谢
 
Koal蜂

ReMark 发表于 2022-7-6 09:56:00

倍数是静态的还是可变的?

Koalbee 发表于 2022-7-6 10:03:05

你好
倍数将只是当时的当前dimscale。。。。因此需要在每次运行命令时查看dimscale来提取。
 
谢谢

ReMark 发表于 2022-7-6 10:08:19

(getvar“dimscale”)?

Koalbee 发表于 2022-7-6 10:11:20

抱歉的评论。。我要在lisp中添加这个吗?
如果是这样的话,我该如何在指令中加入与dimscale相乘的内容。
正如我所说,这对我来说是全新的,当前的lisp是从另一个文件复制的
 
再次感谢

Tharwat 发表于 2022-7-6 10:17:06

看看这个,伙计。
 


(defun c:2011-insert-sm (/ clay *error* DScale)
(setq clay (getvar "clayer"))
(setq *ERROR* MyError)
(command "_.-layer" "m" "025txt" "")
(while
(setq DScale (getint "\n Enter scale factor for Block Insertion :"))
(command "_.-insert" "Dynamic_Section_Mark-2009" pause DScale DScale 0)
)
(setvar "clayer" clay)
(princ)
)

Tharwat

Smirnoff 发表于 2022-7-6 10:23:59

这是你需要的吗?我只是添加了一些行,一些删除并编写了相关的错误处理程序。
 
(defun c:2011-insert-sm (/ clay cScl *error*)

(defun *error*(msg)
   (setvar "clayer" clay)
   (setvar "CMDECHO" 1)
   (princ)
   ); end of *error*

(setq clay (getvar "clayer")
   cScl(getvar "DIMSCALE")
   ); end setq
(princ(strcat "\nCurrent DIMSCALE = " (rtos cScl 2 2)))
(setvar "CMDECHO" 0)
(command "-layer" "m" "025txt" "")
(command "-insert" "Dynamic_Section_Mark-2009" "_s" cScl pause 0)
(setvar "CMDECHO" 1)
(setvar "clayer" clay)
(princ)
)

Koalbee 发表于 2022-7-6 10:28:04

你好
Tharwat-您的lisp引入了块,但似乎只将其拉伸一个方向,是否需要添加一些内容以在各个方向上进行缩放?
 
Smirnoff-您的lisp返回以下消息:
错误:输入列表格式不正确
命令:未知命令“2011-INSERT-SM”。按F1键获取帮助。
 
谢谢你帮助大家。。。还有什么想法吗?
 
Koal蜂

Tharwat 发表于 2022-7-6 10:32:11

 
代码更新Koal Bee
 
塔瓦特

Smirnoff 发表于 2022-7-6 10:37:38

 
我认为你在抄写时漏掉了第一个或最后一个括号。请重试。要么你有这个文件,要么有另一个括号缺失的代码。此代码正在运行。
页: [1] 2
查看完整版本: 简单lisp命令-Dimscale