Sunday, April 27, 2025

FREELISP : Align circles in x or y axis

               


            If user want to make group of circles  align with reference one in X-axis or Y-axis.  Pls download LISP source code and run in your PTCAD.  Video below show how to use command (axy).

    Here is Video

            


Here is LISP source code  

(defun c:Axy( / refEnt refData refCenter selSet idx entData mode moveVec srcCenter )
  
  ;; Select reference circle
  (setq refEnt (car (entsel "\nSelect reference circle: ")))
  (if (and refEnt (eq (cdr (assoc 0 (entget refEnt))) "CIRCLE"))
    (progn
      (setq refData (entget refEnt))
      (setq refCenter (cdr (assoc 10 refData)))
      ;; Ask user alignment axis
      (initget "X Y")
      (setq mode (getkword "\nAlign by [X/Y]: "))
      ;; Select circles to align
      (setq selSet (ssget '((0 . "CIRCLE"))))
      (if selSet
        (progn
          (setq idx 0)
          (while (< idx (sslength selSet))
            (setq ent (ssname selSet idx))
            (setq entData (entget ent))
            (setq srcCenter (cdr (assoc 10 entData)))
            
            (cond
              ;; Align X axis only
              ((= mode "X")
               (setq moveVec (list (- (car refCenter) (car srcCenter)) 0.0 0.0))
              )
              ;; Align Y axis only
              ((= mode "Y")
               (setq moveVec (list 0.0 (- (cadr refCenter) (cadr srcCenter)) 0.0))
              )
            )
            ;; Move the circle
            (command "MOVE" ent "" '(0 0 0) moveVec)
            (setq idx (1+ idx))
          )
          (princ "\n✅ Circles aligned successfully.")
        )
        (princ "\nNo circles selected.")
      )
    )
    (princ "\n❌ Please select a valid circle as reference.")
  )
  (princ)
)

No comments:

Post a Comment

Draw mechanical details with PTCAD Plus - MEC

     Draw mechanical details with PTCAD Plus - MEC               PTCAD Plus edition contains many plug-ins  AECplus, MEC, Assetlink which ca...