插入块,添加圆,exlo
我需要插入一个块提示我输入块名称
提示我输入块的y比例
提示我块的总体大小
插入块
添加圆圈
分解块
创建包含圆的新块
请帮忙
(defun C:fp (/ BlockName CmdEchoOld InsPt OsmodeOld Rot ScaleX ScaleXY
ScaleY)
(vl-load-com)
(setq CmdEchoOld (getvar "CMDECHO")
OsmodeOld(getvar "OSMODE")
)
(setvar "CMDECHO" 0)
(SETVAR "OSMODE" 0)
(setq BlockName (getstring T "\nEnter block name:")
InsPt (getpoint "Specify insertion point:")
ScaleX (getreal "\nEnter X scale value:");;; no need for this line as y always = 1
(setq fp(getdist"\nEnter the focal point: "))
(setq ns(getdist"\nEnter the ns point: "))
ScaleY (getreal "\nEnter Y scale value:")
ScaleXY (getreal "\nEnter overall scaling:")
Rot (getreal "Specify rotation angle of the block :");;; no need for this line as the rotation is always 0
)
(vl-cmdf "._insert" BlockName InsPt ""ScaleY Rot)
(vl-cmdf "._scale" "_L" "" InsPt ScaleXY)
(setq fp3(list(-(car inspt)(fp))((cadr inspt))))
(setq fp4(list(+(car inspt)(fps))(cadr inspt))))
(setq ns1(list(car inspt)))(-(cadr inspt)(ns))))
(setq ns2(list(car inspt)(ns))(+(cadr inspt)(ns))))
(COMMAND "circle" fp3 2)
(COMMAND "circle" fp4 2)
(COMMAND "circle" ns1 2)
(COMMAND "circle" ns2 2)
(setvar "CMDECHO" CmdEchoOld)
(setvar "OSMODE" OsmodeOld)
(princ)
)
(princ)
我不知道用宏生成块是否可行。我不想在这个论坛上问一个大问题。我可以很容易地把它做成一个方块。
最大的帮助是画出4个圆。
我提供的代码是从3个不同的宏粘贴在一起的。这就是为什么它如此令人困惑。直到现在当我看到
(setq fp3(list(-(car inspt)(fp))((cadr inspt)))) 是的,你能把你用的积木的图纸发给我吗?
还包括要插入的圆圈,其中包括半径;)
穿过小圆的线需要修剪吗?
尊敬的先生 块就是圆。我插入它,缩放y轴(在本例中为0.5)
然后缩放块(本例中为5000)
添加圆(fp 3和4是椭圆的焦点)
并添加ns点
穿过ns2的线路不需要修剪。
4个圆的直径为总尺寸的0.04*
sdial。图纸 忘记附上此图纸
按比例缩放。图纸 我试图画出如上图所示的4个圆,但不断出现错误
(defun c:fp2 ()
(graphscr)
(setq fp(getdist"\nEnter focal point: "))
(setq ns(getdist"\nEnter ns point: "))
(setq inspt(getpoint"\nPlace to add to the block :"))
(setq p1(list(-(car inspt)(fp))(cadr inspt)))
(setq p2(list(+(car inspt)(fp))(cadr inspt)))
(setq p3(list (car inspt))(+(cadr inspt)ns)))
(setq p4(list (car inspt))(-(cadr inspt)ns)))
(COMMAND "circle" p1 10)
(COMMAND "circle" p2 10)
(COMMAND "circle" p3 10)
(COMMAND "circle" p4 10)
)
好的,你可以在我下面的代码中添加圆圈,。。。
(defun c:fp2 ()
;Made by rooky37
;Autocad The Netherlands
;Copyright © MR. CAD Mitchell Rodhouse
;;;;;;Thankfully to MR. CAD -Mitchell Rodhouse
;define the function
(graphscr)
;*
;Save System Variables
(setq oldsnap (getvar "osmode"))
;save snap settings
(setq oldblipmode (getvar "blipmode"))
;save blipmode setting
(setvar "cmdecho" 1)
(setvar "INSUNITS" 4)
;*
;Switch OFF system Variables
(setvar "osmode" 0)
;Switch OFF snap
(setvar "blipmode" 0)
;Switch OFF Blipmode
;*
;get User Inputs
(setq fp (getdist"\nEnter focal point: "))
(setq ns (getdist"\nEnter ns point: "))
;*
;Get Insertion Point
(setq inspt(getpoint"\nPlace to add to the block :"))
(setvar "osmode" 32)
;switch ON snap
(setvar "osmode" 0)
;switch OFF snap
;*
;Start of Polar Calculations
(setq p1 (polar inspt (dtr -90.0) fp))
(setq p2 (polar inspt (dtr 90.0) fp))
(setq p3 (polar inspt (dtr 180.0) ns))
(setq p4 (polar inspt (dtr 0.0) ns))
;End of the Polar calculations by MR. CAD - MITCHELL RODHOUSE
;*
;Start Command Function
(COMMAND "circle" p1 200
"circle" p2 200
"circle" p3 200
"circle" p4 200
) ;End command
;End of Commands made by MR. CAD - MITCHELL RODHOUSE
(setvar "osmode" 32)
;switch ON snap
;*
;Reset System Variable
(setvar "osmode" oldsnap)
;Reset snap
(setvar "blipmode" oldblipmode)
;Reset blipmode
(setvar "cmdecho" 0)
(princ "Copyright © - Written by MR. CAD")
(setvar "cmdecho" 1)
;*
(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 by 180 then
;multiply the result by the constant PI
) ;End of function
;*
(princ) ;load cleanly
;*
;;HOPE THIS LISP WILL BE FUNCTIONAL FOR THE USER
;;MADE BY MR. CAD - MITCHELL RODHOUSE
;;END LISP
我可以从这一点做一个参考块,也可以包括一个给定位置的椭圆。。也可以将你的方块加载到一个给定的位置,然后将其分解。。。。嗯,我会尽力帮你。。。你不想插入圆圈的直径吗?
尊敬的先生 谢谢米切尔·罗德豪斯!
是的,我希望4个圆的直径为0.04*整体尺寸,但我现在不知道该怎么做
页:
[1]