rookie37 发表于 2022-7-6 10:52:26

插入块,添加圆,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)


rookie37 发表于 2022-7-6 11:05:58

我不知道用宏生成块是否可行。我不想在这个论坛上问一个大问题。我可以很容易地把它做成一个方块。
 
最大的帮助是画出4个圆。
 
我提供的代码是从3个不同的宏粘贴在一起的。这就是为什么它如此令人困惑。直到现在当我看到
 
(setq fp3(list(-(car inspt)(fp))((cadr inspt))))

mitchellrodhous 发表于 2022-7-6 11:09:40

是的,你能把你用的积木的图纸发给我吗?
 
还包括要插入的圆圈,其中包括半径;)
穿过小圆的线需要修剪吗?
 
尊敬的先生

rookie37 发表于 2022-7-6 11:21:22

块就是圆。我插入它,缩放y轴(在本例中为0.5)
然后缩放块(本例中为5000)
添加圆(fp 3和4是椭圆的焦点)
并添加ns点
 
穿过ns2的线路不需要修剪。
4个圆的直径为总尺寸的0.04*
sdial。图纸

rookie37 发表于 2022-7-6 11:29:51

忘记附上此图纸
按比例缩放。图纸

rookie37 发表于 2022-7-6 11:40:20

我试图画出如上图所示的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)








)


mitchellrodhous 发表于 2022-7-6 11:48:05

好的,你可以在我下面的代码中添加圆圈,。。。
 
(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
 
我可以从这一点做一个参考块,也可以包括一个给定位置的椭圆。。也可以将你的方块加载到一个给定的位置,然后将其分解。。。。嗯,我会尽力帮你。。。你不想插入圆圈的直径吗?
 
尊敬的先生

rookie37 发表于 2022-7-6 11:54:49

谢谢米切尔·罗德豪斯!
 
是的,我希望4个圆的直径为0.04*整体尺寸,但我现在不知道该怎么做
页: [1]
查看完整版本: 插入块,添加圆,exlo