Jump to content

Add DimbaseLine-Please


Jerry_VN

Recommended Posts

This is LeeMac's code, I want to add a total dimension line, can someone help me?

(defun c:iDim ( / doc spc p1 p2 ss lst )
 ;; ゥ Lee Mac 2010
 (vl-load-com)

 (LM:ActiveSpace 'doc 'spc)

 (if (and
       (setq p1 (getpoint "\nSpecify First Point: "))
       (setq p2 (getpoint "\nSpecify Second Point: " p1))
       (setq ss
         (apply 'ssget
           (append (list "_C")
             (mapcar
              '(lambda ( foo )
                 (apply 'mapcar (cons foo (list p1 p2)))
               )
              '(min max)
             )
             (list '((0 . "~*DIMENSION")))
           )
         )
       )
       (setq lst
         (
           (lambda ( l / i )
             (setq i (LM:GetObjIntersectionsinSS l ss))
             (vla-delete l)
             i
           )
           (vlax-ename->vla-object
             (entmakex
               (list
                 (cons 0 "LINE")
                 (cons 10 p1)
                 (cons 11 p2)
               )
             )
           )
         )
       )
     )
   (progn
     (setq lst
       (vl-sort lst
        '(lambda ( a b ) (< (distance p1 a) (distance p1 b)))
       )
     )
     (mapcar
      '(lambda ( p1 p2 )
         (vla-AddDimAligned spc
           (vlax-3D-point p1) (vlax-3D-point p2) (vlax-3D-point p1)
         )
       )
       (reverse (cdr (reverse lst))) (cdr lst)
     )
   )
 )
 (princ)
)


(defun LM:GetObjIntersectionsinSS ( obj ss )
 ;; ゥ Lee Mac 2010
 (
   (lambda ( i / j a b iLst )

     (while (setq e (ssname ss (setq i (1+ i))))
       (setq iLst
         (append iLst
           (LM:GroupByNUm
             (vlax-invoke obj 'IntersectWith
               (vlax-ename->vla-object e) acExtendNone
             )
             3
           )
         )
       )
     )
   )
   -1
 )
)


(defun LM:GroupByNum ( l n / a b )
 ;; ゥ Lee Mac 2010
 (while l
   (
     (lambda ( i )
       (while (< 0 i)
         (setq a (cons (car l) a) l (cdr l) i (1- i))
       )
       (setq b (cons (reverse a) b) a nil)
     )
     n
   )
 )
 (reverse b)
)

(defun LM:ActiveSpace ( *doc *spc )
 (set *spc
   (if
     (or
       (eq AcModelSpace
         (vla-get-ActiveSpace
           (set *doc
             (vla-get-ActiveDocument
               (vlax-get-acad-object)
             )
           )
         )
       )
       (eq :vlax-true (vla-get-MSpace (eval *doc)))
     )
     (vla-get-ModelSpace (eval *doc))
     (vla-get-PaperSpace (eval *doc))
   )
 )
)

1e4ce42cab290e775738.jpg

Edited by SLW210
Added Code Tags!
Link to comment
Share on other sites

In the future please use Code Tags for code. (<> in the editor toolbar)

  • Thanks 1
Link to comment
Share on other sites

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