Jump to content

Recommended Posts

Posted (edited)

I would like to see the frame when drawing the rectangle, as in the standard autocad command.

If you only call the RECTANGLE command without passing points to it, then AutoCAD will enable the standard interactive construction.

If you remove from the line (command "_.RECTANGLE" p1 p2) p1 and p2 
(command "_.RECTANGLE"), then the code does not work further, that is, the cloud is not drawn.
 

(defun c:RectRevClCol (/ p1 p2 ssRect ssCloud)
  (prompt "Specify the first point of the rectangle: ")
  (setq p1 (getpoint))
  (prompt "Specify the opposite point of the rectangle: ")
  (setq p2 (getpoint p1))
  (command "_.RECTANGLE" p1 p2)
  (setq ssRect (ssget "_L"))         
  (if ssRect
    (progn
      (command "_REVCLOUD" "_Object" ssRect "" "_ArcLength" "500" "")
      (setq ssCloud (ssget "_L"))     
      (if ssCloud
        (command "_.CHPROP" ssCloud "" "_Color" "2" "")
      )
    )
  )
  (princ)
)

 

rectangle1.png     rectangle2.png      rectangle-revcloud.png

Edited by Nikon
Posted

Might have to study GrRead and GrDraw to do that.

Posted

or instead of using (setq p2 (getpoint p1)) try (setq p2 (getcorner p1))

  • Like 2
Posted (edited)
26 minutes ago, rlx said:

or instead of using (setq p2 (getpoint p1)) try (setq p2 (getcorner p1))

Super! Right in the bull's-eye! Thanks! ****

(defun c:RectRevClCol (/ p1 p2 ssRect ssCloud)
  (prompt "Specify the first point of the rectangle: ")
  (setq p1 (getpoint))
  (prompt "Specify the opposite point of the rectangle: ")
  (setq p2 (getcorner p1)) ; *** rlx
  (command "_.RECTANGLE" p1 p2)
  (setq ssRect (ssget "_L"))         
  (if ssRect
    (progn
      (command "_REVCLOUD" "_Object" ssRect "" "_ArcLength" "500" "")
      (setq ssCloud (ssget "_L"))     
      (if ssCloud
        (command "_.CHPROP" ssCloud "" "_Color" "2" "")
      )
    )
  )
  (princ)
)

 

Edited by Nikon
Posted

Another -

(defun c:rectrevclcol ( / cec )
    (setq cec (getvar 'cecolor))
    (setvar 'cecolor "2")
    (initcommandversion)
    (vl-cmdf "_.revcloud" "_a" 500 "_r")
    (while (= 1 (logand 1 (getvar 'cmdactive))) (vl-cmdf "\\"))
    (setvar 'cecolor cec)
    (princ)
)

 

  • Like 2
  • Agree 1
Posted

You can put the prompts in the getpoint. Note the \n this is make a new line on command prompt.

(prompt "Specify the first point of the rectangle: ")
  (setq p1 (getpoint))
  (prompt "Specify the opposite point of the rectangle: ")
  (setq p2 (getcorner p1)) ; *** rlx


  (setq p1 (getpoint "\nSpecify the first point of the rectangle: "))
  (setq p2 (getcorner p1 "\nSpecify the opposite point of the rectangle: ")) ; *** rlx

 

  • Thanks 1
Posted (edited)
9 hours ago, Lee Mac said:

Another -

(defun c:rectrevclcol ( / cec )
    (setq cec (getvar 'cecolor))
    (setvar 'cecolor "2")
    (initcommandversion)
    (vl-cmdf "_.revcloud" "_a" 500 "_r")
    (while (= 1 (logand 1 (getvar 'cmdactive))) (vl-cmdf "\\"))
    (setvar 'cecolor cec)
    (princ)
)

It's brilliant! The revcloud is immediately drawn as a cloud!
Thanks!

rectrevclcolLM.gif

Edited by Nikon
Posted

For those who don't like clouds 💭 💭 💭
Sometimes you need to highlight something and you can forget that the frame needs to be deleted.

;; Rectangle on the Defpoints layer, LWEIGHT 0.5, color 2 yellow
;; Based on the Lee Mac code
 (defun c:RectLayDefcol2 ( / cec cel cla )
    (setq cec (getvar 'cecolor))
    (setvar 'cecolor "2")
    (setq cel (getvar 'celweight))
    (setvar "celweight" 50)  
    (setq cla (getvar 'clayer))

  (command "_.-LAYER" "_M" "Defpoints" "")

    (initcommandversion)
    (vl-cmdf "_.rectang")
    (while (= 1 (logand 1 (getvar 'cmdactive))) (vl-cmdf "\\"))
    (setvar 'cecolor cec)
    (setvar 'celweight cel)
    (setvar 'clayer cla)

    (princ)
)

 

Posted

You should avoid using Defpoints layer, Defpoints layer in AutoCAD is automatically created when dimensions are added and is intended to hold definition points for those dimensions. While some users may place objects on this layer to prevent them from printing, it is generally not recommended as it can lead to unexpected issues in the drawing.

 

Create a new no plot layer instead and use that.

 

 

 

  • Agree 1
Posted
1 hour ago, SLW210 said:

You should avoid using Defpoints layer, Defpoints layer in AutoCAD is automatically created when dimensions are added and is intended to hold definition points for those dimensions. While some users may place objects on this layer to prevent them from printing, it is generally not recommended as it can lead to unexpected issues in the drawing.

 

Create a new no plot layer instead and use that.

I agree, then there will be another version.:

;; Rectangle on the non-printable "LayDef" layer, LWEIGHT 0.5, color 2 yellow
;; Based on the Lee Mac code 02.10.2025

 (defun c:RectLayDef_N ( / cec cel cla )
    (setq cec (getvar 'cecolor))
    (setvar 'cecolor "2")
    (setq cel (getvar 'celweight))
    (setvar "celweight" 50)  
    (setq cla (getvar 'clayer))

  (command "_.-LAYER" "_M" "LayDef" "_C" 2 "LayDef" "_LW" 0.50 "LayDef" "_P" "_N" "LayDef" "")

  (setvar 'clayer "LayDef")

    (initcommandversion)
    (vl-cmdf "_.rectang")
    (while (= 1 (logand 1 (getvar 'cmdactive))) (vl-cmdf "\\"))
    (setvar 'cecolor cec) 
    (setvar 'celweight cel)
    (setvar 'clayer cla) 

    (princ)
)

 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...