Jump to content

Recommended Posts

Posted

I am searching for a lisp code to draw a section line like the test.dwg.

1) Select 2 points for the length of the section

2) Pick a point for the direction of the section

3) Draw section line with the arrows and ask for the section letter for exampl A,B

 

Thanks

TEST.dwg

Posted
(defun C:SECTIONLINE ( / pt1 pt2 dirpt baseAngle dirAngle angle
                        arrowLen arrowAng secLetter txtpt angleDeg
                        p1 p2 )


  (setq arrowLen 10.0)       
  (setq arrowAng (/ pi 6.0)) 


  (setq pt1 (getpoint "\nSelect first point of section line: "))
  (if (not (and pt1 (listp pt1)))
    (progn (princ "\nCanceled or invalid first point.") (quit))
  )

  (setq pt2 (getpoint pt1 "\nSelect second point of section line: "))
  (if (not (and pt2 (listp pt2)))
    (progn (princ "\nCanceled or invalid second point.") (quit))
  )

  (setq dirpt (getpoint "\nPick a point to define section direction: "))
  (if (not (and dirpt (listp dirpt)))
    (progn (princ "\nCanceled or invalid direction point.") (quit))
  )


  (setq baseAngle (angle pt1 pt2))
  (setq dirAngle (angle pt1 dirpt))
  (setq angle (if (< (abs (- baseAngle dirAngle)) (/ pi 2.0))
                baseAngle
                (+ baseAngle pi)))


  (command "._LINE" "_non" pt1 "_non" pt2 "")

  (setq p1 (polar pt1 (+ angle arrowAng) arrowLen))
  (setq p2 (polar pt1 (- angle arrowAng) arrowLen))
  (command "._LINE" "_non" pt1 "_non" p1 "")
  (command "._LINE" "_non" pt1 "_non" p2 "")


  (setq p1 (polar pt2 (+ angle arrowAng) arrowLen))
  (setq p2 (polar pt2 (- angle arrowAng) arrowLen))
  (command "._LINE" "_non" pt2 "_non" p1 "")
  (command "._LINE" "_non" pt2 "_non" p2 "")


  (setq secLetter (getstring T "\nEnter section letter (e.g., A, B): "))
  (if (= secLetter "") (setq secLetter "A"))


  (if (and (listp pt1) (listp pt2))
    (progn
      (setq txtpt (mapcar '(lambda (a b) (/ (+ a b) 2.0)) pt1 pt2))
      (setq angleDeg (* 180.0 (/ angle pi)))
      (command "._TEXT" "_non" txtpt 2.5 angleDeg (strcat secLetter "-" secLetter))
    )
    (princ "\nText not placed due to invalid points.")
  )

  (princ "\nSection line created successfully.")
  (princ)
)

 

 

I have this error (I use ZWCAD)

 

Command: SECTIONLINE

Select first point of section line: 
Select second point of section line: 
Pick a point to define section direction: 
Error: undefined function - nil

 

Thanks

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...