Rain0923 发表于 2022-7-5 16:50:23

如何将所有点更改为

我找到了一个lisp,但它不能同时将所有点都变成矩形。
请有任何人可以帮我尝试更新这个Lisp程序?还是给我另一个选择?
谢谢!!
 
(defun C:ptr ()
(setq wide (getdist "\nEnter Rectangle X Dimension ? :")
(setq high (getdist "\nEnter Rectangle Y Dimension ? :")
(setq ptc (getpoint "\nPick Center of Rectangle:")
hwide (/ wide 2.0)
hhigh (/ high 2.0)
ptll (list (- (car ptc) hwide) (- (cadr ptc) hhigh))
ptur (list (+ (car ptll) wide) (+ (cadr ptll) high))
)
(setvar "plinewid" 0.0)
(command ".PLINE" ptll "W" "0" "0" ".X" ptur ".Y" ptll ptur ".X" ptll ".Y" ptur "C")
)
(prin1)

Tharwat 发表于 2022-7-5 16:54:39

这应该足够了。
 

(defun c:Test (/ w h p)
(if (and (setq w (getdist "\n Specify Rectangle X Dimension :"))
          (setq h (getdist "\n Specify Rectangle Y Dimension :"))
          (setq p (getpoint "\n Pick Center Point of Rectangle:"))
   )
   (command "_.rectang" "_w" 0.0 "_non" (setq 1p (polar (polar p (* pi 0.5) (/ h 2.)) pi (/ w 2.))) "_non"
            (polar (polar 1p 0. w) (* pi 1.5) h)
   )
)
(princ)
)

Rain0923 发表于 2022-7-5 16:59:02

亲爱的Tharwat,
谢谢你的回复。
我有很多点,我怎么能把所有的点同时变成矩形??在你的Lisp程序中,我需要逐个选择点。
 

Tharwat 发表于 2022-7-5 17:05:57


 

(defun c:Test (/ w h p s i 1p 2p 3p 4p)
;;         Tharwat 10.12.2014                ;;
;; Draw rectangles using the center         ;;
;;         of selected points                 ;;
(if (and (setq w (getdist "\n Specify Rectangle X Dimension :"))
          (setq h (getdist "\n Specify Rectangle Y Dimension :"))
          (princ "\n Select Point objects ...")
          (setq s (ssget '((0 . "POINT"))))
   )
   (repeat (setq i (sslength s))
   (setq p(cdr (assoc 10 (entget (ssname s (setq i (1- i))))))
         1p (polar (polar p (* pi 0.5) (/ h 2.)) pi (/ w 2.))
         2p (polar 1p 0. w)
         3p (polar 2p (* pi 1.5) h)
         4p (polar 3p pi w)
   )
   (entmakex
       (append (list '(0 . "LWPOLYLINE")
                     '(100 . "AcDbEntity")
                     '(100
                     .
                     "AcDbPolyline"
                      )
                     '(90 . 4)
                     '(70 . 1)
               )
               (mapcar '(lambda (q) (cons 10 q)) (list 1p 2p 3p 4p))
       )
   )
   )
)
(princ)
)

Rain0923 发表于 2022-7-5 17:09:06

亲爱的Tharwat,
非常感谢你。。。。。。。。。。。。这是对的。
你是个天才D: D
 

Tharwat 发表于 2022-7-5 17:12:50

 
非常欢迎你。

Rain0923 发表于 2022-7-5 17:15:06

亲爱的Tharwat,
乌烟瘴气!!再次打扰你。。。。。。。。。
请问,有没有可能用多个圆变成多个矩形?
或者许多矩形改变了我需要的大小?
 

Tharwat 发表于 2022-7-5 17:20:45

 
只需替换程序中的以下行。
 

 

(setq s (ssget '((0 . "POINT"))))

 
用这个。。
 

(setq s (ssget '((0 . "POINT,CIRCLE"))))

Rain0923 发表于 2022-7-5 17:24:33

亲爱的Tharwat,
那很好。你真是我的英雄。
非常感谢。。。。
 

Tharwat 发表于 2022-7-5 17:30:12

 
 
祝您有个美好的一天。
页: [1] 2
查看完整版本: 如何将所有点更改为