AutoLisp用于缩放、扩展、purg
大家好,我是Autolisp函数的新手,我正在尝试查找/绘制一个例程,该例程可以缩放扩展、清除图形、将所有线宽设置为默认值并快速保存文件,如果有人已经有了这样的功能,我真的希望获得帮助。我还一直在尝试绘制一个lisp,将特定角点的两条线延伸/拉伸一定距离。
正如我之前所说,我真的很期待你能给予的帮助。谢谢b4! 欢迎来到CADTutor lalcalac。
Autocad中有一个很好的功能,我认为这在很大程度上被忽视了,并且非常易于使用。
动作记录器是一个按键记录器,我一直在使用它。
可以在右键单击快捷菜单中访问它,以动态创建宏,或访问您以前创建和保存的宏。 或者用老式的方式打开记事本,每次手动复制一行键入的每个步骤,您可能需要在前面使用“-”以关闭对话框提示,例如“-purge B”清除块,您还需要一个空行,在那里您需要按enter键退出,然后将文件另存为脚本文件Mycleanup。scr注意“.scr”,运行类型“Script mycleanup”
-清除
全部的
*
N
Q保存y 我不知道这个动作录像机,我必须说,太棒了,我把你和比加尔给我的提示混合在一起,效果很好,现在我只需要想办法做角球,你们太棒了,非常感谢!!!
好消息,很高兴你喜欢!
我真的认为很多人从来没有尝试过或注意到它。
由于我自己并不编写lisp,因此在运行中使用它非常有帮助。
在处理高度重复的任务时,它可以真正节省时间。
试着把它用在那个角落里。 好的,到目前为止,我用这个动作录制器获得了很多有用的东西,但是,我有这个问题,我不知道我做错了什么,我使用命令lenghten来做转角的事情,并使用动作录制器自动设置增量和距离,但当宏停止时,它发送给我这个错误(附图片),希望能帮助我,谢谢b4
我看到您在选择对象之前定义了Delta,这似乎是您应该做的。
您想要延长的对象类型到底是什么?
刚刚重温了你的第一篇文章,我看到它们是两条线,我猜它们在端点处相交,并定义了角点?
想知道拉伸是更好的命令还是缩放,因为加长命令只允许选择单个对象。
如果使用“比例”,并将基点定义为它们相交的顶点,这是否可行?
我经常设置动作录制器宏,这样我就可以在没有选择的情况下点击“继续播放”,但这似乎不是一个合适的选项,尽管您可以尝试一下。
如果您可以发布一张图纸。,如果我能更好地理解线条是什么样子,我很乐意尝试一下。
我想知道LENGTHEN是否是最适合您尝试做的事情的命令,它可能是,但没有足够的信息,我很难确定。 这张图展示了我想做的事情,我想从选项A到选项B,我通常是手工做的,在角上画一个圆并延伸线,但正如你所见,这需要很多时间,因为有很多角,(这张图只是一个小例子),希望它有助于理解情况,谢谢b4!
角线。图纸 感谢您发布。dwg,它肯定会清除你的目标。
不幸的是,我认为没有简单的方法可以做到这一点。
看起来相当劳动密集型。
如果要编写lisp,我有点好奇,选择集将如何定义。
对不起,我知道这不是你想听的答案,也不是我想给你的答案。
很高兴你喜欢这个动作录音机。使用越多,创建这些宏的能力就越好。
它确实有一些bug,但即便如此,自从我开始使用它以来,它还是为我节省了不少时间。
祝你的角球好运,希望其他人能给你一个有创意的方法。 好的,你想要一个几年前我做的lisp,叫做TICS,用于建筑TICS,将线延伸到一个已知的距离,你可以批量选择等等,
; BY Alan H 2012
; tics.lsp
; draw architectural tic marker tics.lsp
;defun exline
(defun ah:exline (en / p1 p2 p3 p4 ang )
(setq p1 (vlax-safearray->list (vlax-variant-value(vla-get-startpoint en))))
(setq p2 (vlax-safearray->list (vlax-variant-value(vla-get-endpoint en))))
(setq ang (angle p1 p2))
(setq p3 (polar p1 (- ang pi) tic_len))
(setq p4 (polar p2 ang tic_len))
(command "line" p1 p3 "")
(command "line" p2 p4 "")
)
; pline co-ords
; By Alan H
(defun AH:getcoords (ent / I len)
(setq co-ords (vlax-safearray->list (vlax-variant-value (vlax-get-property en "Coordinates" ))))
(setq len (length co-ords))
(setq numb (/ len 2))
(setq I 0)
(repeat numb
(setq xy (list (nth i co-ords)(nth (+ I 1) co-ords) ))
(setq co-ordsxy (cons xy co-ordsxy))
(setq I (+ I 2))
)
) ;defun
(defun AH:expoly (ordsxy / pt1 pt2 num x)
(setq x (length ordsxy))
(if (= (vla-get-closed en) :VLAX-FALSE)
(setq num x)
(setq num (- x 1)) ; open
) ; closed
(setq p2 (nth (setq x (- x 1)) ordsxy))
(repeat num
(setq p1 (nth (setq x (- x 1)) ordsxy))
(setq ang (angle p1 p2))
(setq p3 (polar p1 (- ang pi) tic_len))
(setq p4 (polar p2 ang tic_len))
(command "line" p1 p3 "")
(command "line" p2 p4 "")
(setq p2 p1)
)
)
; starts here
; checklay make if missing
(if (=(tblsearch "layer" "Tics") nil)
(command "-layer" "n" "Tics" "c" 1 "Tics" "")
)
(defun c:tics ( / tic_len ss y)
(setq tic_len (getdist "\nEnter tick size mm <20> "))
(if (= tic_len nil) ; pressed enter so 20
(setq tic_len 20)
)
; Selection set to measure
;now pick multiple lines etc
(setq exlay (getvar 'clayer))
(setvar "clayer" "tics") ; change layer name to suit
(setq oldsnap (getvar 'osmode))
(setq ss (ssget)) ; no check if it returned something
; put a create layer here
(setvar 'osmode 0)
(repeat (setq y (sslength ss))
(setq en (vlax-ename->vla-object (ssname ss (setq y (- y 1)))))
; Entity type
(setq entype (vla-get-ObjectName en))
(cond ((= entype "AcDbLine")(AH:exline en))
((= entype "AcDbPolyline")(AH:getcoords en)(AH:expoly co-ordsxy)(setq co-ordsxy nil))
)
)
(setvar 'clayer exlay)
(setvar 'osmode oldsnap)
(princ)
) ;defun
页:
[1]
2