英尺英寸的脚本可能
尊敬的各位:,我正在搜索:
我在drg中有很多尺寸。,我必须这样写:10'-0“x 12'-6”,就像这样。
我们所有人都必须面对这样的写作问题,通过按住shift键并按下键盘上的“按钮”来输入10,然后输入“然后签名-然后再次签名0”。
你不觉得这需要我们很多时间吗?
我想要一个vba或lisp脚本,无论它是什么,都可以完成以下工作:
Finding-sign in the text and then macro将插入“sign before-sign and at end of string it will enter”。
易于理解的
但是怎么做呢?
pl.帮助 从DISTANCE命令开始,然后从答案中取整数,因此有两个变量作为数字,10和6实际上是0.5
如果你选择了三个点,这就给了双方,或者你可以选择两条线,这是你的选择。
然后使用RTOS real to string和STRCAT连接应答,然后只使用文本命令
这是一个开始学习如何编写lisp等的好例子,而不是我写代码,但这是一个开始,如果你不亲自发布代码,你就不会学习,帮助也会随之而来。
未经测试的代码
; dist of two lines as text
(setq pt1 (getpoint "\nPick first point .."))
(setq pt2 (getpoint "\nPick second point .."))
(setq pt3 (getpoint "\nPick third point .."))
(setq dist1 (distance Pt1 Pt2))
(setq dist2 (distance Pt1 Pt2))
(setq dist1main (- (fix dist1) dist1))
(setq dist1rem (- dist1main dist1))
(setq text1 (rtos dist1main 2 0))
(setq text2 (rtos dist1rem 2 0))
(setq sqtext (strcat text1 "x" text2))
(princ sqtext)
工具栏按钮:我有一个并排命名为字母、数字和符号的工具栏,每个工具栏都有这个宏
其中*是符号,即A_^H“_^H”
它所做的是将第一个字符加上_传递到命令提示符,然后调用backspace。只要继续选择带有相应字母/符号的按钮,直到按enter键为止,你就只会得到第一个字符,就像“A”上面的字符一样。
你也可以在写作时使用单词/句子。
还有像这样的东西
(defun c:test (/ l a z y)
(setvar 'Dynmode -3)
(cond ((and
(setq l (nentsel "\nSelect Text:"))
(setq a (assoc 1 (entget (car l))))
(setq z (cdr a))
(progn
(setq Y (getstring T (strcat "\nEnter New String <" z "> :")))
(vla-put-textstring
(vlax-ename->vla-object (car l))
(if (null y)
z
y
)
)
)
)
)
)
(setvar 'Dynmode 3)
(princ)
)
再一次,这是另一个懒惰打字员综合症的例子,就像我的大多数人一样。那么,为什么不为他们写一封信呢 尊敬的各位:,
我想要的是这样:
;Labels a lot's area using the Boundary command. LPS 2008-10
(defun c:LA () ;(/ cl txtst txtsz oldecho oldsnap B ac sf kw)
(setq temperr *error*);store *error*
(setq *error* errortrap);reassign *error*
(setq cl (getvar "clayer")
txtst (getvar "textstyle")
txtsz (getvar "textsize")
oldecho (getvar "cmdecho")
oldsnap (getvar "osmode")
);setq
(setvar "cmdecho" 0)
(command "-style" "SIMPLEX" "simplex.shx" "0" "0.9" "0" "n" "n" "n")
(setq ip (getpoint "\nPick internal point: "))
(command "-layer" "m" "calc" "c" "63" "calc" "p" "n" "calc" "")
(command "-boundary" ip "")
(command "region" (entlast) "")
(setq b (entlast))
(command "area" "o" b)
(setq ac (strcat (rtos (/ (getvar "area") 0.0929) 2 3) " Sq.Ft."))
(setq sf (strcat (rtos (getvar "area") 2 2) " SQ.M."))
(setq per (strcat (rtos (getvar "perimeter") 2 2) " M."))
(command "-layer" "m" "LOT-AREA" "c" "53" "" "")
(command "text"
"s"
"simplex"
"c"
ip
(* 0.2 (getvar "dimscale"))
"0"
sf
)
(command "text" "" ac)
(command "text" "" per)
(initget "Yes No")
(setq kw (getkword "\nErase boundary Yes/No? <Yes>"))
(if
(= kw nil)
(command "erase" b "")
) ;if
(command "textstyle" txtst)
(setvar "clayer" cl)
(setvar "textsize" txtsz)
(setvar "cmdecho" oldecho)
(setvar "osmode" oldsnap)
(setq *error* temperr)
(princ)
);defun c:
;==========ERROR TRAP=================
(defun errortrap (msg) ;define function
(setvar "textstyle" txtst)
(setvar "textsize" txtsz)
(setvar "clayer" cl)
(setvar "cmdecho" oldecho) ;restore variables
(setvar "osmode" oldsnap)
(setq *error* temperr) ;restore *error*
(prompt "\nResetting System Variables ") ;inform user
(princ)
);defun
;==========ERROR TRAP=================
(prompt "\nLotArea.lsp loaded, type LA to run")
(princ)
在这种情况下,当我输入命令LA,然后通过单击封闭的形状,我立即得到其面积和外围。
同样,我想要这样的代码:
点击正方形或矩形形状,我应该得到写在形状中心的尺寸,如下所示:
10'-0“x 12'-6”
我认为这应该是可能的,当然只有在你的帮助下!! 边界创建了一条pline,因此需要通过两种方式了解左下角和右上角
您可以遍历pline顶点并计算cnr min和cnr max,从而得到L&H
我想这里有一个“包围盒”的要求,它应该做你想要的。
当你列出一个区域时,它给出了框边界,现在可以使用VLA找到变量?
第二次搜索其他帖子找到了吗?我想这是你想要的
http://www.cadtutor.net/forum/showthread.php?62559-当前图形的边界框&高亮显示=边界 哇。我对OP请求的理解还差得很远 ;;--------------=={ SelectionSet BoundingBox }==--------------;; ;; ;; ;;Returns the lower-left and upper-right points of a ;; ;;rectangle bounding all objects in a supplied SelectionSet ;; ;;------------------------------------------------------------;; ;;Author: Lee Mac, Copyright © 2011 - www.lee-mac.com ;; ;;------------------------------------------------------------;; ;;Arguments: ;; ;;ss - SelectionSet for which to return the BoundingBox ;; ;;------------------------------------------------------------;; ;;Returns:Point List decribing BoundingBox (in WCS) ;; ;;------------------------------------------------------------;;(defun LM:SSBoundingBox ( ss / i l1 l2 ll ur ) (repeat (setq i (sslength ss)) (vla-getboundingbox (vlax-ename->vla-object (ssname ss (setq i (1- i)))) 'll 'ur) (setq l1 (cons (vlax-safearray->list ll) l1) l2 (cons (vlax-safearray->list ur) l2) ) ) (mapcar '(lambda ( a b ) (apply 'mapcar (cons a b))) '(min max) (list l1 l2)) )
我已复制文件并将其另存为ssbox。lsp,然后将其粘贴到dwg中。文件但我可以在命令行上写什么命令;我不明白 只需加载SSbox,然后再加载SSboundingbox。请参阅LM:SSboundingbox这是一个函数名
不要将代码粘贴到DWG中
或者在lisp just(ssboundingbox)中
Vipulogos,
SelectionSet BoundingBox是一个需要参数的函数,而不是程序本身。我的网站上提供了一个示例程序来演示如何调用该函数。将函数和示例程序复制到文件或VLIDE编辑器窗口中,并加载这两部分。
此外,尽可能提供到原始代码的链接,而不是复制代码。既然你在论坛或我的网站上找到了这段代码,请链接到你找到它的地方,而不是在这里复制代码。
李 尊敬的各位:,
我在这段时间里损失了几天,但我今天再次开始解决这个问题,但什么也没有发生。如何获得lisp代码,通过该代码,我可以单击由四行创建的矩形,并且尺寸将按照所附的drg进行书写。
事实上,原始代码已根据我的要求进行了轻微更改,因此,我已将其完全粘贴
示例1.dwg
页:
[1]
2