具有3个属性的块
我有一个包含三个属性的块,分别表示窗口的宽度、长度和平方英尺。我编写了一个简单的代码,将块插入到图形中,并根据用户需要重复。问题是,-Insert命令产生了一个错误,产生了一个“无效的选项关键字”错误消息。(defun c:ATO-Windows ()
(c:utility-start)
(setvar "osmode" 0)
(SETVAR "TEXTEVAL" 1)
(setq ATOLayer "AreaTakeOff-Window"
ATOLayerColor "143"
ATOLineType "Continuous"
ATOBlkWPath "C:/ACAD2008/HVAC/BLOCKS/ATTR-WINDOW"
)
(command "layer" "on" ATOLayer "thaw" ATOLayer
"m" ATOLayer "C" ATOLayerColor
ATOLayer "Ltype" ATOLineType ""
)
(setq continue "T")
(while continue
(setq WindowLength "0"
WindowWidth "0"
)
(setq WindowLength (getstring "\nEnter Window Length in feet: "))
(setq WindowWidth (getstring "\tWidth in feet: "))
(setq RealLength (atof WindowLength)
RealWidth(atof WindowWidth)
)
(setq RealArea (* RealLength RealWidth))
(setq WindowArea (strcat (rtos RealArea 2 2) "SF"))
(SETVAR "ATTDIA" 0)
(terpri)
(if (> RealArea 0.0)
(command "-insert" ATOBlkWPath "Scale" (getvar "Userr3") Pause "0"
WindowLengthWindowWidthWindowArea
)
(setq continue nil)
) ;end if
) ;end while
(c:utility-end)
(SETVAR "ATTDIA" 1)
) ;end c:ATO-Windows
块连接,设置测试此代码的路径。我不明白为什么我会出错。也许一双新的眼睛会发现一些东西。
谢谢
氯
属性窗口。图纸 有很多问题,但最大的问题是设置了ATTDEFs验证位。
我试着把它清理一下:
(defun c:ATO-Windows (/ ATOLayer ATOLayerColor ATOLineType
ATOBlkWPath WindowLength WindowWidth
RealArea WindowArea ipt)
;(c:utility-start)
;(setvar "osmode" 0)
(setvar "CMDECHO" 0)
(if (= (getvar "USERR3") 0)
(setvar "USERR3" 4.8))
(setq ATOLayer "AreaTakeOff-Window"
ATOLayerColor "143"
ATOLineType "Continuous"
ATOBlkWPath "C:/ACAD/AWINDOW" ;2008/HVAC/BLOCKS/ATTR-WINDOW
)
(if (not (tblsearch "LAYER" ATOLayer))
(command "_.LAYER""_M"ATOLayer ""))
(command "_.LAYER" "_ON" ATOLayer
"_T"ATOLayer
"_S"ATOLayer
"_C"ATOLayerColor ATOLayer
"_LT" ATOLineType ATOLayer "")
(while (progn
(initget 6)
(setq WindowLength (getdist "\nEnter Window Length in feet: ")))
(initget 7)
(setq WindowWidth (getdist "\tWidth in feet: "))
(setq RealArea (* WindowLength WindowWidth))
(setq WindowArea (strcat (rtos RealArea 2 2) "SF"))
(initget 1)
(setq ipt (getpoint "\nInsert Point: "))
(command "_.INSERT" ATOBlkWPath ipt (getvar "Userr3") "" ""
(rtos WindowLength 2 2)
(rtos WindowWidth2 2)
WindowArea))
;(c:utility-end)
(prin1))
-大卫
A窗口。图纸 我认为ENTMAKE比调用command更好
附属的
-创建lisp的块可以用作子例程
-我用来创建的lisp。
属性窗口。lsp
EntMaker CAB 03-MakeEntmake。lsp 感谢David处理代码。它按照我的计划工作。我比较我的代码来理解我的错误。我尝试在代码中使用下划线插入和下划线-点插入,但仍然不断出错。下划线使命令透明正确吗?下划线点做什么?
感谢asos2000提供您的ENTMAKE版本。虽然我已经通读了代码,但我并没有完全理解它。对我来说是相当先进的东西。我将使用此代码作为学习工具来理解ENTMAKE OMAND。
扔出 问题在于ATTDEFs。设置验证位后,需要将属性值两次提供给命令调用
_.表示使用国际名称并忽略未定义的命令。(破折号)通常表示绕过对话框输入屏幕-大卫
页:
[1]