masterfal 发表于 2022-7-5 17:04:37

与中心点成直角

大家好,
 
我用这个简单的lisp从一个中心点画一个正方形。我觉得这很方便,因为很多时候我需要在一列的中心绘制一个焊盘,并使用普通矩形命令,它不允许从中心点创建它,这有点烦人。Autocad应将其作为一个选项。。
无论如何,唯一的问题是,如果我需要一个800sq的垫子,我需要输入400,因为它要求“半径”大小。是否可以修改它,以便如果我需要800sq,我可以只输入800?
如果它很简单,我想这样做,但如果不是,我可以继续减半我的垫大小,这样做
 
(defun c:rre() (command "polygon" "4" pause "c"))

Grrr 发表于 2022-7-5 17:24:02

探索此线程:
http://www.cadtutor.net/forum/showthread.php?96834-绘制正方形
 
编辑:或尝试以下操作:

(defun C:test ( / d AcSpc p CircleObj p1 p3 ll ur )

(initget (+ 1 2 4))
(setq d (getreal "\nSpecify square's size: "))
(setq AcSpc (vlax-get-property (vla-get-ActiveDocument (vlax-get-acad-object)) (if (= 1 (getvar 'CVPORT)) 'Paperspace 'Modelspace)))
(setvar 'errno 0)
(while (/= 52 (getvar 'errno))
        (initget 128 "Size") (setq p (getpoint "\nSpecify square's center point or : "))
        (cond
                ((and (= 'STR (type p)) (wcmatch p "S*")) (initget (+ 1 2 4)) (setq d (getreal "\nSpecify square's size: ")))
                ((and p (listp p))
                        (setq CircleObj (vla-AddCircle AcSpc (vlax-3D-point p) (/ d 2.)))
                        (vla-GetBoundingBox CircleObj 'll 'ur)
                        (mapcar 'set '(p1 p3) (mapcar 'vlax-safearray->list (list ll ur)))
                        (entmake
                                (append
                                        (list (cons 0 "LWPOLYLINE")(cons 100 "AcDbEntity")(cons 100 "AcDbPolyline")(cons 90 4)(cons 70 1))
                                        (mapcar '(lambda (x) (cons 10 x)) (list p1 (list (car p1) (cadr p3)) p3 (list (car p3) (cadr p1))))
                                )
                        )
                        (vla-Delete CircleObj)
                )
                (T (setvar 'errno 52))
        )
)

(princ)
);| defun |; (or (vlax-get-acad-object) (vl-load-com)) (princ)

RobDraw 发表于 2022-7-5 17:30:58

 
AutoCAD确实有此选项。多边形

PDuMont 发表于 2022-7-5 17:42:21

 
 
(defun c:rre ( / dia )
(setq dia (getreal "\nEnter diameter... "))
(setq dia (/ dia 2))
(command "polygon" "4" pause "c" dia)
(princ)
)

BIGAL 发表于 2022-7-5 17:53:05

尽可能短
 
(defun c:rre ( )
(command "polygon" "4" pause "c" (/ (getreal "enter dia") 2.0))
)

masterfal 发表于 2022-7-5 18:01:48

问题已解决!!干杯,伙计们!
总有一天我会自己解决这件事。。

PDuMont 发表于 2022-7-5 18:11:20

 
比加尔好多了。。。
页: [1]
查看完整版本: 与中心点成直角