插入前部。。
你好如果我在模型空间中找到插入点,lisp就会正常工作。
但是,当我想在我的模型空间中点击激励对象的尾端时,我得到了一个错误。
有人知道是什么引起的吗?
ps1:我尝试使用3d实体的ip,这是不对的!bij 2d物体,一切顺利!
谢谢,先生
(defun c:front ()
;define the function
;*
;Save System Variables
(setq oldsnap (getvar "osmode"))
;save snap settings
(setq oldblipmode (getvar "blipmode"))
;save blipmode setting
;*
;Switch OFF system Variables
(setvar "osmode" 0)
;Switch OFF snap
(setvar "blipmode" 0)
;Switch OFF Blipmode
;*
;get User Inputs
(setq s (getdist "\nHowmuch Offset do you want? :"))
;Offset of you cabin front from the trunk
(setq d (getdist "\nThickness of the front : "))
;Thickness of your front
(setq h (getdist "\nHeight of you cabin : "))
;Input the Hight of you cabin
(setq b (getdist "\nWidth of you cabin : "))
;Input the Width of you cabin
;*
;Get Insertion Point
(setvar "osmode" 32)
;Switch ON snap
(setq ip (getpoint "\nInsertion Point : "))
;get the insertion point
(setvar "osmode" 0)
;Switch OFF snap
(setvar "cmdecho" 0)
;*
;Start of Polar calculations
(setq p2 (polar ip (dtr 0.0) 0))
(setq p3 (polar ip (dtr 0.0) b))
(setq p4 (polar p3 (dtr -90.0) d))
(setq p5 (list (car p2) (cadr p2) (+ (caddr p2) h)))
(setq p6 (list (car p5) (cadr p5) (- (caddr p5) 160)))
(setq r1 (list (car p2) (cadr p2) (+ (caddr p2) s)))
(setq p7 (polar p2 (dtr 0.0) s))
(setq p8 (list (car p7) (cadr p7) (+ (caddr p7) s)))
(setq p9 (polar r1 (dtr 0.0) b))
(setq p10 (polar p9 (dtr 180.0) s))
(setq p11 (list (car p7) (cadr p7) (+ (caddr p7) h)))
(setq p12 (list (car p11) (cadr p11) (- (caddr p11) s)))
(setq p13 (polar p10 (dtr -90.0) d))
;End of Polar Calculations
;*
;Start of Command Function
(command "box" p8 p13 p12
) ;End Command
;End of Command Function
;Start of Command Function
(command "-insert" "listscharnier" "_non" ip "" "" "0"
"-insert" "listscharnier" "_non" p6 "" "" "0"
) ;End command
;End of Command Function
;*
(setvar "osmode" 32)
;Switch ON snap
;*
;Reset System Variable
(setvar "osmode" oldsnap)
;Reset snap
(setvar "blipmode" oldblipmode)
;Reset blipmode
;*
(princ)
;finish cleanly
);end of defun
;*
;This function converts Degrees to Radians.
(defun dtr (x)
;define degrees to radians function
(* pi (/ x 180.0))
;divide the angle bij 180 then
;mutiply the result by the constant PI
) ;End of function
;*
(princ) ;load cleanly
;*
对我来说,这是可行的,也许是因为终点与新战线不在同一高度上的问题?
Bij mij werkt het。。。Ik weet het verder niet maar misschien heeft het met de Z positie te maken? 是的,我也认为这与Z的位置有关。
只有这是一个命令,我可以从我的lisp设置Z的位置,所以它会工作。
或者我可以从另一个lisp中调用这个lisp文件,这样它会将这个lisp的插入点放在另一个lisp给定的点上?
“Ja ik denk ook dat het iets遇见了de Z waarde te maken heeft。
Misschien是er dan een command dat ik de Z positie kan bepalen vanuit mijn lisp文件。。。
关于Mischien,他是ook een Mogelijkhide om deze lisp op te roepen vanuit een Ander lisp吗?Dan kan ik het插入点van deze lisp op een point,gegeven vanuit de Ander lisp,bepalen?
°verwarrend°” 对不起,我恐怕不能再帮你了。。。我完全不知道AutoCAD中的3D功能。耐心一点,我们当中有很多人拥有你需要的知识。
翻译不需要我认为。。。 其他人可能知道如何设置它? 你收到了什么错误?你能发布你的代码插入的块吗?我发现除了没有插入块之外,所有这些都可以工作。我建议对代码进行一些更改,以便在输入时可以看到正在绘制的内容。。。
对我来说,我自己做了一个方块,也许我不应该那样做。。。 嘿
谢谢你的回复。
我附上了文件scharnier。zip,因为它是一个三维实体对象。
只有在播放lisp并在二维对象捕捉点上拾取拾取点时,lisp文件才能正常工作。但是,如果我在中播放lisp并从3d对象中拾取一个拾取点,结果是它必须绘制的长方体的尺寸/大小完全不同。
我会给你代码,这样你就可以看到命令了
ps1:你只能在acad中加载一次附件后播放这个lisp,否则他找不到文件。。。
ps2:有人知道我如何在不首先加载块的情况下插入附件中类似的块吗?
(defun c:front ()
;define the function
;*
;Save System Variables
(setq oldsnap (getvar "osmode"))
;save snap settings
(setq oldblipmode (getvar "blipmode"))
;save blipmode setting
;*
;Switch OFF system Variables
(setvar "osmode" 0)
;Switch OFF snap
(setvar "blipmode" 0)
;Switch OFF Blipmode
;*
;get User Inputs
(setq s (getdist "\Offset of the front:"))
;Hoeveel speling rondom de fronten
(setq d (getdist "\nThickness of the front : "))
;Thickness of the front
(setq h (getdist "\nHight of the front : "))
;Hight of the front
(setq b (getdist "\nWidth of the front : "))
;Width of the front
;*
;Get Insertion Point
(setvar "osmode" 32)
;Switch ON snap
(setq ip (getpoint "\nInsertion Point : "))
;get the insertion point
(setvar "osmode" 0)
;Switch OFF snap
(setvar "cmdecho" 1)
;*
;Start of Polar calculations
(setq p2 (polar ip (dtr 0.0) 0))
(setq p3 (polar ip (dtr 0.0) b))
(setq p4 (polar p3 (dtr -90.0) d))
(setq p5 (list (car p2) (cadr p2) (+ (caddr p2) h)))
(setq p6 (list (car p5) (cadr p5) (- (caddr p5) 160)))
(setq r1 (list (car p2) (cadr p2) (+ (caddr p2) s)))
(setq p7 (polar p2 (dtr 0.0) s))
(setq p8 (list (car p7) (cadr p7) (+ (caddr p7) s)))
(setq p9 (polar r1 (dtr 0.0) b))
(setq p10 (polar p9 (dtr 180.0) s))
(setq p11 (list (car p7) (cadr p7) (+ (caddr p7) h)))
(setq p12 (list (car p11) (cadr p11) (- (caddr p11) s)))
(setq p13 (polar p10 (dtr -90.0) d))
;End of Polar Calculations
;*
;Start of Command Function
(command "ucs" "w"
) ;End command
(command "box" p8 p13 p12
) ;End Command
;End of Command Function
;Start of Command Function
(command "-insert" "listscharnier" "_non" ip "" "" "0"
"-insert" "listscharnier" "_non" p6 "" "" "0"
) ;End command
;End of Command Function
;*
(setvar "osmode" 32)
;Switch ON snap
;*
;Reset System Variable
(setvar "osmode" oldsnap)
;Reset snap
(setvar "blipmode" oldblipmode)
;Reset blipmode
;*
(princ)
;finish cleanly
);end of defun
;*
;This function converts Degrees to Radians.
(defun dtr (x)
;define degrees to radians function
(* pi (/ x 180.0))
;divide the angle bij 180 then
;mutiply the result by the constant PI
) ;End of function
;*
(princ) ;load cleanly
;*
有人知道吗?
沙尼尔。拉链 好的,我确实发现了哪里出了问题,但现在我必须得到一个代码来让它工作。
Bij使用LISP将对象放置为长方体如果在模型空间中单击,则可以正确运行LISP pomplete。al之后;如果在令人兴奋的实体对象的端点处单击以作为插入点,lisp将无法正常工作。
我刚刚开始创建这些lisp文件,我想知道我是否可以得到一个代码,这样我可以选择一个端点作为我的起点,仍然可以正确运行我的lisp文件。。。我会附上lisp文件,
ps1:这是一个技巧,可以加载我的listscharnier来很好地运行lisp。
问候先生
正面LSP 您为正面、宽度、厚度等输入的典型尺寸是多少。?你能上传一张你想要实现的东西的图纸吗(最终的产品)?在查看您的代码时,除非我知道您试图实现的目标,否则我现在无法看到有什么问题。但我确实看到的一件事是,dtr功能实际上并不必要。0度=0弧度,180度=π,-90度=(*1.5π)。至于在加载之前插入块,您必须让代码绘制块,创建块,然后插入。(据我所知)。。。
页:
[1]
2