它应该将区域写入atribu
相反,我得到的是:命令:ppp
地区
指定第一个角点或[对象(Object)/添加面积(Add area)/减去面积(Subtract area)]:0,0
指定下一点或[弧/长度/撤消]:
需要点或选项关键字。
; 错误:功能已取消
指定下一点或[弧/长度/撤消]:*取消*
谁能帮帮我,因为我对Lisp程序这件事还不熟悉。
(定义C:PPP()
(命令“区域“0,0”)
(命令“AREA”“E”暂停)
(命令)
(setq di(getvar“dimzin”))
(setvar“dimzin”0)
(setq uprec 2)
(SETQ R(GETVAR“区域”))
(SETQ P(/R 10000))
(SETQ P(RTOS P uprec))
(SETQ P(距离P 2))
(如果(等式R 0)(SETQ P1“nic”)(SETQ P1(RTOS P 2 2)))
(命令“ATTEDIT”“Y”“*”“*”“*”“PAUSE”“V”“R”P1“”)
(setvar“dimzin”di) 有更有效的方法来实现这一点。。
但我们从你的代码开始
(setq di (getvar "dimzin"))
当你不处理维度时,检索这个有什么意义?
作为最终结果,RTOS功能将处理您的任何意图
((SETQ R (GETVAR "AREA"))
(SETQ P (/ R 10000))
(SETQ P (RTOS P uprec))
(SETQ P (DISTOF P 2))
你可以用一个围棋来做这件事。。。
(setq p (distof (rtos (/ (getvar "area")10000) 2 )))
但是再一次,你需要变量R作为你的线
为此。。。
(IF (EQ R 0) (SETQ P1 "nic") (SETQ P1 (RTOS P 2 2)))
这是您检查所选对象是否没有区域数据的部分吗?(r可变)
或者与单位有关?
我测试时,你的代码运行良好。 这是我检查所选对象是否没有区域数据的部分。。
所以你说它有效。。
奇怪,因为我有ACAD 2011,但它没有。。
但在2009年,一切都很好。。。我用的是2011年的完整版本。。。
正如我之前所说,我对这个完全陌生,不太懂双簧管Lisp程序。
我现在无法在2009年查看。
你在什么版本的ACAD上试用过? 我们可以继续走这条路,或者尝试这样的方式
(defun c:test (/ Pline_Hatch object_area attrib_text)
(vl-load-com)
(cond
((setq Pline_Hatch (ssget "_:S" '((0 . "LWPOLYLINE,HATCH"))))
(setq object_area (vla-get-area (vlax-ename->vla-object (ssname Pline_Hatch 0))))
(setq attrib_text (nentsel))
(vla-put-textstring (vlax-ename->vla-object (car attrib_text)) object_area)
)
)
)
现在是小数点
您可以使用LUPREC系统变量
或者改变这个
(setq object_area (rtos (vla-get-area (vlax-ename->vla-object (ssname Pline_Hatch 0))) 2 2))
取决于你工作的单位
工程建筑的十进制的
祝你好运 非常感谢。
哦,我明白了,我很烂。。
所以我补充说
(SETQ object\u areab(/object\u area 10000))
我现在得到了我想要的平方米面积。
但我不知道怎么把它缩短,我的意思是在逗号后只留下两个位置。。
这可能没什么难的,但对我来说,这仍然是黑魔法。。 你考虑过使用字段吗?
也许有一些值得思考的地方:
------------------=={Areas 2属性}==----------------;;;;;;使用字段引用填充选定属性;;;;选定对象的面积总和;;;;---------------------------------------------------------------------------;;;;作者:Lee Mac,版权所有©2010-www.Lee-Mac。通用域名格式;;;;------------------------------------------------------------;;(defunc:A2Anil(c:Areas2Attribute(*错误*\u StartUndo_EndUndo doc att ss(vl load com;;©Lee Mac 2010(defun*错误*((doc()([(wcmatch(strcasemsgprinc(“\n**错误:“msg”**“ 【color=RED】)(princ(doc)(\U EndUndo doc)[/颜色(vla StartUndoMarkdoc(defun(doc b](如果(==009900]8(logand8(getvar'UNDOCTL())(setqdoc(vla get ActiveDocument()和黑色(0。“圆弧、圆、椭圆、图案填充、LW多段线、区域、样条线”)(att(LM:Selectif b](lambda(x(eq“ATTRIB”((0(entgetx]]]]]NTERSEL[\n选择属性:“(()([(lambda(ss fld)(setqfld(fldfld“%+”(vla put TextString(attT(substrfld1(()(红色](
页:
[1]