當用戶選擇第一個點時,有沒有辦法保存“第一個角點”和“另一個角點”的變數,然后在使用“矩形”命令時輸入長度和寬度(動態輸入)?
例子:
Command: RECTANGLE
Specify first corner point or [Chamfer/Elevation/Fillet/Thickness/Width]:
Specify other corner point or [Area/Dimensions/Rotation]: @20',15'
我想用“矩形”命令替換下面的內容,以便用戶可以輸入他們需要的長度和寬度。用戶會更喜歡長度和寬度是整數(例如:13、15、20、23...等),如果使用矩形命令可以做到這一點。現在他們必須先畫一個他們想要的整數矩形。然后使用例程并捕捉到角落。希望將所有內容結合在一個例程中。
我現在擁有的:
(setq firstpick (getpoint "\nEnter first corner: "))
(setq secondpick (getcorner firstpick "\nEnter cross corner: "))
; Get all four corners of user drawn rectangle
(setq pt1 firstpick)
(setq pt3 secondpick)
(setq pt2 (list (car pt1) (cadr pt3)))
(setq pt4 (list (car pt3) (cadr pt1)))
; Get the Area drawn and save in variable “myrecarea”
(setq mylength (distance pt1 pt2)); length
(setq mywidth (distance pt1 pt4)); width
(setq myrecarea (* mylength mywidth)); Get area of rectangle (length x width)
我想用“矩形”命令(如果可能的話)替換,這樣用戶就可以輸入長度和寬度。不知道如何用矩形命令替換,提取那些角點并保存為變數......
(setq firstpick (command "rectangle"))(?)
(setq secondpick (?)
; Get all four corners of user drawn rectangle
(setq pt1 firstpick)
(setq pt3 secondpick)
(setq pt2 (list (car pt1) (cadr pt3)))
(setq pt4 (list (car pt3) (cadr pt1)))
; Get the Area drawn and save in variable “myrecarea”
(setq mylength (distance pt1 pt2)); length
(setq mywidth (distance pt1 pt4)); width
(setq myrecarea (* mylength mywidth)); Get area of rectangle (length x width)
*區域大小決定了程式稍后繪制的內容……
最后一個問題,是否可以將例程中繪制的所有內容保存在一個塊中?如果例程在單個圖形中運行多次而不覆寫原始塊,則不確定塊命名將如何作業。
uj5u.com熱心網友回復:
對于矩形部分,我嘗試了下面由Kent1Cooper撰寫的代碼,它似乎可以滿足我的需要。
(defun C:RSCP () ; = Rectangle, Save Corner Points
(command-s "_.rectang"); [must be without Fillet or Chamfer options]
(setq
pt1 (vlax-curve-getPointAtParam (entlast) 0)
pt2 (vlax-curve-getPointAtParam (entlast) 1)
pt3 (vlax-curve-getPointAtParam (entlast) 2)
pt4 (vlax-curve-getPointAtParam (entlast) 3)
); setq
(princ)
); defun
謝謝肯特!
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/435611.html
