(defun c:front2 ()
;Start of Save Settings
(setq oldsnap (getvar "osmode"))
(setq oldblipmode (getvar "blipmode"))
;end of Save Settings
;Start of Get User Input
(setq s (getreal "\nOffset of your front from outside cabinet: "))
(setq d (getreal "\nThickness of the Front: "))
(setq h (getreal "\nHeight of the Front: "))
(setq b (getreal "\nWidth of the Front: "))
(setq ip (getpoint "\nInsertion Point: "))
;End of Get User Input
(setvar "osmode" 0);Turn off snaps
(setvar "cmdecho" 1); For debugging purposes???
;Start of Polar Calculations
(setq p2 ip) ;ip = p2
(setq p3 (polar ip 0 b)) ; From p2 to p3 = Width of the Front
(setq p4 (polar p3 (* 1.5 pi) d)) ; From p3 to p4 = Thickness of the Front
(setq p5 (list (car p2) (cadr p2) (+ (caddr p2) h))) ; p5 = x & y of p2 and z of p2 + Height of the Front
(setq p6 (list (car p5) (cadr p5) (- (caddr p5) 160))) ; p6 = x & y of p5 and z of p5 - 160 units
(setq r1 (list (car p2) (cadr p2) (+ (caddr p2) s))) ; r1 = x & y of p2 and z of p2 + Offset of your front from outside cabinet
(setq p7 (polar p2 0 s)); From p2 to p7 = Offset of your front from outside cabinet
(setq p8 (list (car p7) (cadr p7) (+ (caddr p7) s))); p8 = x & y of p7 and z of p7 + Offset of your front from outside cabinet
(setq p9 (polar r1 0 b));From r1 to p9 = Width of the Front
(setq p10 (polar p9 pi s)) ;From p9 to p10 = Offset of your front from outside cabinet
(setq p11 (list (car p7) (cadr p7) (+ (caddr p7) h))); p11 = x & y of p7 and z of p7 + Height of the Front
(setq p12 (list (car p11) (cadr p11) (- (caddr p11) s))); p12 = x & y of p11 and z of p11 - Offset of your front from outside cabinet
(setq p13 (polar p10 (* 1.5 pi) d)) ;From p10 to p13 = Thickness of the Front
;End of Polar Caclulations
(command "ucs" "w") ;Make sure that the ucs is in world???
;This should maybe be before the Get User Inputs???
(command "box" p8 p13 p12)
;Create a 3d Solid using p8, p13 & p12
(command "-Insert" "listscharnier" "_non" ip "" "" "0")
(command "-Insert" "listscharnier" "_non" p6 "" "" "0")
;Insert the block at the ip (p2) & p6
;Start Reset Old Settings
(setvar "osmode" oldsnap)
(setvar "blipmode" oldblipmode)
;End Reset old Settings
(princ "\nDone!") ;Let User Know Command is finished
(princ) ; Finish Clean
)
请参阅我的附件。在创建文件中的文件柜后,我想添加我的正面。我想给出橱柜的偏移量,然后是橱柜的高度和宽度。然后我想通过单击放置球体的位置来插入正面。但是它不起作用;)
尊敬的先生
1.dwg 今天早上我有机会看了你的图纸。我相信你的错误来自极坐标计算。以下是我所做的更改。尝试在代码中替换以下内容。
;Start Polar Computations
(setq p2 (polar ip 0 s))
(setq p3 (list (car p2) (cadr p2) (+ (caddr p2) s)))
(setq p4 (polar p3 (* 1.5 pi) d))
(setq p5 (polar p4 0 b))
(setq p6 (list (car p5) (cadr p5) (+ (caddr p5) h)))
(setq p7 (list (car ip) (cadr ip) (+ (- h 160) (caddr ip))))
;End Polar Computations
:Draw Box Using Points p3, p5 & p6
(command "box" p3 p5 p6)
;End Draw Box
;Insert Hinges Using Point ip & p7
(command "-insert" "listscharnier" "_non" ip "" "" "0"
"-insert" "listscharnier" "_non" p7 "" "" "0"
)
;End Insert Hinges
P、 dtr功能不是必需的。。。 嗯,我可以用我的铰链创建正面,但仍然不能单击橱柜角落的ip。
如果我点击橱柜的角落,这个Lisp程序就不行了。
您是否尝试创建它并单击橱柜的角落>?
尊敬的先生 好什么不适合你?随着我所做的更改,一切都很好(对INSUNIT进行了一些调整)。
我输入偏移距离、厚度、高度,然后是宽度。然后我点击你放置球体的角落,所有的东西都落在了正确的位置,铰链和盒子。我很乐意帮助你,但我需要确切地知道什么不适合你。 先生,
我添加了搜索块名称的代码,如果没有加载,则会提示用户查找文件。我希望这对你有用。。。(它对我有效)让我知道进展如何。
你好,希佩013
(defun c:front ()
;Begin Save Settings
(setq oldsnap (getvar "osmode"))
(setq oldblipmode (getvar "blipmode"))
;End Save Settings
;Begin Set Settings
(setvar "osmode" 0)
(setvar "blipmode" 0)
(command "ucs" "world")
;End Set Settings
;Begin User Input
(setq s (getdist "\Offset of the front:"))=
(setq d (getdist "\nThickness of the front : "))
(setq h (getdist "\nHight of the front : "))
(setq b (getdist "\nWidth of the front : "))
(setvar "osmode" 32)
(setq ip (getpoint "\nInsertion Point : "))
;End User Input
;Begin Set Settings
(setvar "osmode" 0)
(setvar "cmdecho" 1)
;End Set Settings
;Begin Polar Computations
(setq p2 (polar ip 0 s))
(setq p3 (list (car p2) (cadr p2) (+ (caddr p2) s)))
(setq p4 (polar p3 (* 1.5 pi) d))
(setq p5 (polar p4 0 b))
(setq p6 (list (car p5) (cadr p5) (+ (caddr p5) h)))
(setq p7 (list (car ip) (cadr ip) (+ (- h 160) (caddr ip))))
;End Polar Computations
;Begin Draw Box
(command "box" p3 p5 p6)
;End Draw Box
;Begin Define blk-is-loaded
(defun blk_is_loaded (blk-name / blks cnt n I-Name ret )
(vl-load-com)
(setq blks (vlax-get-property (vlax-get-property (vlax-get-acad-object) 'ActiveDocument) 'Blocks))
(setq cnt (vlax-get-property blks 'Count))
(setq n 0)
(repeat cnt
(setq I-Name (vlax-get-property (vlax-invoke-method blks 'Item n) 'Name))
(if (= blk-name I-Name)
(setq ret T)
(progn
(setq n (+ n 1))
(setq ret nil))
)
)(vlax-release-object blks)
ret
)
;End Define blk-is-loaded
;Begin Determine if block is loaded
;***If block is not found user is directed to find the file else block is inserted***
;NOTE: No error trapping
(if (not (blk_is_loaded "listscharnier"))
(progn
(setq blk-f (getfiled "Find listscharnier Block" "" "dwg" 0))
(if (= blk-f nil)
(progn (princ "\nUser has Cancelled: Exiting.")
(exit)))
(command "-Insert" blk-f "_non" ip "" "" "0")
(command "-Insert" blk-f "_non" p7 "" "" "0")
)
(command "-Insert" "listscharnier" "_non" ip "" "" "0"
"-Insert" "listscharnier" "_non" p7 "" "" "0")
)
;End Determine if block is loaded
;Begin Reset Old Settings
(setvar "osmode" oldsnap)
(setvar "blipmode" oldblipmode)
;End Reset Old Settings
(princ (strcat "\nDimensions Entered for Front: \nOffset = " (rtos s 2 2) "\nThickness = " (rtos d 2 2) "\nHeight = " (rtos h 2 2)
"\nWidth = " (rtos b 2 2) ) )
(princ)
)
我发现的另一个问题是,你需要打开你的沙尼尔。dwg并将块“listscharnier”从插入点移动到0,0,然后在scharnier中将INSUNITS设置为4。然后保存dwg,然后您需要确保您的图形单位也设置为4。到时候一切都会好起来的。 嘿谢谢你打赌能完成这件事,我接管了你的代码,结果前端保持低位。。。。我不知道是什么。我附上一张图片。
你是说盒子画得不对吗?您为偏移、厚度、高度和宽度输入的尺寸是多少?我已经编辑了上述代码(红色)以打印到屏幕上输入的尺寸。 正确,我将接管您更改的完整代码。
现在,在加载lisp kast后,我将包括作为附件,我将使用lisp kast绘制文件柜。试着画出来。。在我画完这个柜子之后,我会把我的正面插在这个柜子上。我使用偏移量3,对于高,我单击橱柜的上角和下角,对于宽,我单击左下角和右下角,然后单击左下角的插入点。。。
我真的不知道为什么它把战线拉得那么低。。。。
尊敬的先生
卡斯特。LSP
页:
1
[2]