Jump to content

Combining Dim and Continue as a single tool


samifox

Recommended Posts

Hi

I usually use the dim tool to set the initial position of the dim line, and then I use Continue mode to continue the line. Never understand why after the initial position setup , the continue mode is not triggered automatically?

So again,

1. Picking the dim tool

2. Set the start and end point position

3. Dim tool change to continue

4. Picking next points

Is there a way to program it with DIESEL ? or could be done only by a lisp?

 

Thanks

S

Link to comment
Share on other sites

I'm not sure if this is what you're looking for, but this is what I use in my office. I usually just draw one overall dimension and then I use this LISP to split the dimension at every point needed. You can also use it to join dimensions if you make a mistake.

 

Command is DIMSPLIT and DIMJOIN.

 

(defun C:DIMSPLIT (/ OBJ_PICK DIM_PICK DIM_ENT DIM_NODE1 DIM_NODE2 DIM_DEF
DIM_POINT DIM_OBJ)
 ;(STORE)
 (command ".undo" "group")
 ;(setvar "osmode" 183)
 (setq DIM_PICK 1)
 (while (and DIM_PICK (/= OBJ_PICK "DIMENSION"))
   (setq DIM_PICK (entsel "\nSelect Dimension: "))
   (if DIM_PICK
     (progn
       (setq OBJ_PICK (cdr (assoc 0 (entget (car DIM_PICK))))
             DIM_ENT (entget (car DIM_PICK))
       )
       (if (/= OBJ_PICK "DIMENSION") (prompt "\nThis is not a Dimension
object."))
     )
   )
 )
 (if (or (= (cdr (assoc 70 DIM_ENT)) 32) ; IF ALIGNED OR ROTATED DIMENSION
         (= (cdr (assoc 70 DIM_ENT)) 160)
         (= (cdr (assoc 70 DIM_ENT)) 33)
         (= (cdr (assoc 70 DIM_ENT)) 161)
     )
   (progn
     (setq DIM_NODE1 (cdr (assoc 13 DIM_ENT))
           DIM_NODE2 (cdr (assoc 14 DIM_ENT))
           DIM_DEF (cdr (assoc 10 DIM_ENT))
           DIM_POINT (getpoint "\nPick split point: ")
     )
     (if DIM_POINT
       (progn
         (if (or (= (cdr (assoc 70 DIM_ENT)) 33) (= (cdr (assoc 70
DIM_ENT)) 161)) ; IF ALIGNED DIMENSION, RESET SPLIT POINT TO ALIGN BETWEEN
NODES
           (setq DIM_POINT (inters (polar DIM_POINT (angle DIM_DEF
DIM_NODE2) 12.0) DIM_POINT DIM_NODE1 DIM_NODE2 nil))
         )
         (setq DIM_OBJ (subst (cons 13 DIM_POINT) (assoc 13 DIM_ENT)
DIM_ENT))
         (entmod DIM_OBJ)
         (command "copy" DIM_PICK "" DIM_POINT DIM_POINT)
         (setq DIM_ENT (entget (entlast))
               DIM_OBJ (subst (cons 14 DIM_NODE1) (assoc 14 DIM_ENT)
DIM_ENT)
         )
         (entmod DIM_OBJ)
       )
     )
   )
   (if DIM_PICK (prompt "\nThis is neither a Rotated nor an Aligned
Dimension."))
 )
 (command ".undo" "end")
 ;(RESTORE)
 (princ)
)

(defun C:DIMJOIN (/ OBJ1_PICK DIM1_PICK DIM1_ENT DIM1_NODE1 DIM1_NODE2
DIM1_OBJ
                   OBJ2_PICK DIM2_PICK DIM2_ENT DIM2_NODE1 DIM2_NODE2
DIMCASE)
 ;(STORE)
 (command ".undo" "group")
 ;(setvar "osmode" 183)
 (setq DIM1_PICK 1
       DIM2_PICK 1
 )
 (while (and DIM1_PICK (/= OBJ1_PICK "DIMENSION"))
   (setq DIM1_PICK (entsel "\nSelect First Dimension: "))
   (if DIM1_PICK
     (progn
       (setq OBJ1_PICK (cdr (assoc 0 (entget (car DIM1_PICK))))
             DIM1_ENT (entget (car DIM1_PICK))
       )
       (if (/= OBJ1_PICK "DIMENSION") (prompt "\nThis is not a Dimension
object."))
     )
   )
 )
 (if (or (= (cdr (assoc 70 DIM1_ENT)) 32) ; IF ALIGNED OR ROTATED DIMENSION
         (= (cdr (assoc 70 DIM1_ENT)) 160)
         (= (cdr (assoc 70 DIM1_ENT)) 33)
         (= (cdr (assoc 70 DIM1_ENT)) 161)
     )
   (progn
     (if (= OBJ1_PICK "DIMENSION")
       (progn
         (while (and DIM2_PICK (/= OBJ2_PICK "DIMENSION"))
           (setq DIM2_PICK (entsel "\nSelect Second Dimension: "))
           (if DIM2_PICK
             (progn
               (setq OBJ2_PICK (cdr (assoc 0 (entget (car DIM2_PICK))))
                     DIM2_ENT (entget (car DIM2_PICK))
               )
               (if (/= OBJ2_PICK "DIMENSION") (prompt "\nThis is not a
Dimension object."))
             )
           )
         )
         (if (or (= (cdr (assoc 70 DIM2_ENT)) 32) ; IF ALIGNED OR ROTATED
DIMENSION
                 (= (cdr (assoc 70 DIM2_ENT)) 160)
                 (= (cdr (assoc 70 DIM2_ENT)) 33)
                 (= (cdr (assoc 70 DIM2_ENT)) 161)
             )
           (progn
             (setq DIM1_NODE1 (cdr (assoc 13 DIM1_ENT))
                   DIM1_NODE2 (cdr (assoc 14 DIM1_ENT))
                   DIM2_NODE1 (cdr (assoc 13 DIM2_ENT))
                   DIM2_NODE2 (cdr (assoc 14 DIM2_ENT))
             )
      (if (= (fix (distance DIM1_NODE2 DIM2_NODE1)) 0.0)
        (setq DIM1_OBJ (subst (cons 14 DIM2_NODE2) (assoc 14 DIM1_ENT)
DIM1_ENT) DIMCASE 1)
      )
      (if (= (fix (distance DIM1_NODE2 DIM2_NODE2)) 0.0)
               (setq DIM1_OBJ (subst (cons 14 DIM2_NODE1) (assoc 14
DIM1_ENT) DIM1_ENT) DIMCASE 2)
      )
      (if (= (fix (distance DIM1_NODE1 DIM2_NODE1)) 0.0)
        (setq DIM1_OBJ (subst (cons 13 DIM2_NODE2) (assoc 13 DIM1_ENT)
DIM1_ENT) DIMCASE 3)
      )
      (if (= (fix (distance DIM1_NODE1 DIM2_NODE2)) 0.0)
        (setq DIM1_OBJ (subst (cons 13 DIM2_NODE1) (assoc 13 DIM1_ENT)
DIM1_ENT) DIMCASE 4)
      )
      (if DIMCASE
        (progn
                 (entmod DIM1_OBJ)
                 (command "erase" DIM2_PICK "")
        )
        (prompt "\nDimensions are not coincident.")
             )
             )
           (if DIM2_PICK (prompt "\nThis is neither a Rotated nor an
Aligned Dimension."))
         )
       )
     )
   )
   (if DIM1_PICK (prompt "\nThis is neither a Rotated nor an Aligned
Dimension."))
 )
 (command ".undo" "end")
 ;(RESTORE)
 (princ)
)

(defun C:DIMDIVIDE (/ OBJ_PICK DIM_PICK DIM_ENT DIM_NODE1 DIM_NODE2 DIM_DEF
DIM_POINT DIM_OBJ)
 ;(STORE)
 (command ".undo" "group")
 ;(setvar "osmode" 183)
 (setq DIM_PICK 1)
 (while (and DIM_PICK (/= OBJ_PICK "DIMENSION"))
   (setq DIM_PICK (entsel "\nSelect Dimension: "))
   (if DIM_PICK
     (progn
       (setq OBJ_PICK (cdr (assoc 0 (entget (car DIM_PICK))))
             DIM_ENT (entget (car DIM_PICK))
       )
       (if (/= OBJ_PICK "DIMENSION") (prompt "\nThis is not a Dimension
object."))
     )
   )
 )
 (if (or (= (cdr (assoc 70 DIM_ENT)) 32) ; IF ALIGNED OR ROTATED DIMENSION
         (= (cdr (assoc 70 DIM_ENT)) 160)
         (= (cdr (assoc 70 DIM_ENT)) 33)
         (= (cdr (assoc 70 DIM_ENT)) 161)
     )
   (progn
     (if (not DIM_DIV) (setq DIM_DIV 2))
     (initget 6)
     (setq DIM_DIV (DEFNUM DIM_DIV "\nNumber of divisions"))
     (if (and (= OBJ_PICK "DIMENSION") (> DIM_DIV 1))
       (progn
         (setq DIM_ENT (entget (car DIM_PICK))
               DIM_NODE1 (cdr (assoc 13 DIM_ENT))
               DIM_NODE2 (cdr (assoc 14 DIM_ENT))
               DIM_DEF (cdr (assoc 10 DIM_ENT))
               DIM_POINT (polar DIM_NODE1 (angle DIM_NODE1 DIM_NODE2) (/
(distance DIM_NODE1 DIM_NODE2) DIM_DIV))
               DIM_OBJ (subst (cons 14 DIM_POINT) (assoc 14 DIM_ENT)
DIM_ENT)
         )
         (entmod DIM_OBJ)
         (setq DIM_NODE2 (cdr (assoc 14 DIM_OBJ)))
         (command "copy" DIM_PICK "" DIM_NODE1 DIM_NODE2)
         (setq DIM_ENT (entget (entlast))
               DIM_OBJ (subst (cons 10 DIM_DEF) (assoc 10 DIM_ENT) DIM_ENT)
         )
         (entmod DIM_OBJ)
         (repeat (- DIM_DIV 2)
           (command "copy" (ENTLAST) "" DIM_NODE1 DIM_NODE2)
           (setq DIM_ENT (entget (entlast))
                 DIM_OBJ (subst (cons 10 DIM_DEF) (assoc 10 DIM_ENT)
DIM_ENT)
           )
           (entmod DIM_OBJ)
         )
       )
     )
   )
   (if DIM_PICK (prompt "\nThis is neither a Rotated nor an Aligned
Dimension."))
 )
 (command ".undo" "end")
 ;(RESTORE)
 (princ)
)

(defun C:DIMOFFSET (/ OBJ_PICK DIM_SIDE DIM_PICK DIM_ENT DIM_NODE1 DIM_NODE2
DIM_INT DIM_DEF DIM_POINT DIM_OBJ)
 ;(STORE)
 (command ".undo" "group")
 (if (not DIM_OFFS) (setq DIM_OFFS (* 0.375 (getvar "dimscale"))))
 (initget 2)
 (setq DIM_OFFS (DEFDIST DIM_OFFS "Specify offset distance"))
 (setq DIM_PICK 1 OBJ_PICK 1)
 (while (and DIM_PICK (/= OBJ_PICK "DIMENSION"))
   (setq DIM_PICK (entsel "\nSelect Dimension to offset: "))
   (if DIM_PICK
     (progn
       (setq OBJ_PICK (cdr (assoc 0 (entget (car DIM_PICK))))
             DIM_ENT (entget (car DIM_PICK))
       )
       (if (/= OBJ_PICK "DIMENSION") (prompt "\nThis is not a Dimension
object."))
     )
   )
 )
 (if (or (= (cdr (assoc 70 DIM_ENT)) 32) ; IF ALIGNED OR ROTATED DIMENSION
         (= (cdr (assoc 70 DIM_ENT)) 160)
         (= (cdr (assoc 70 DIM_ENT)) 33)
         (= (cdr (assoc 70 DIM_ENT)) 161)
     )
   (progn
     (setq DIM_SIDE (getpoint "\nSpecify point on side to offset: "))
     (if DIM_SIDE
       (if (and (= OBJ_PICK "DIMENSION") (> DIM_OFFS 0))
         (progn
           (setvar "osmode" 0)
           (setq DIM_ENT (entget (car DIM_PICK))
                 DIM_NODE1 (cdr (assoc 13 DIM_ENT))
                 DIM_NODE2 (cdr (assoc 14 DIM_ENT))
                 DIM_DEF (cdr (assoc 10 DIM_ENT))
                 DIM_INT (polar DIM_SIDE (angle DIM_DEF DIM_NODE2) 12.0)
                 DIM_POINT (inters (polar DIM_DEF (+ (angle DIM_DEF
DIM_NODE2) (DTR 90.0)) 12.0) DIM_DEF DIM_SIDE DIM_INT nil)
           )
           (command "copy" DIM_PICK "" DIM_NODE2 (polar DIM_NODE2 (angle
DIM_POINT DIM_SIDE) DIM_OFFS))
           (setq DIM_ENT (entget (entlast))
                 DIM_OBJ (subst (cons 13 DIM_NODE1) (assoc 13 DIM_ENT)
DIM_ENT)
           )
           (entmod DIM_OBJ)
           (setq DIM_ENT (entget (entlast))
                 DIM_OBJ (subst (cons 14 DIM_NODE2) (assoc 14 DIM_ENT)
DIM_ENT)
           )
           (entmod DIM_OBJ)
           (setq DIM_ENT (entget (entlast))
                 DIM_DEF (polar DIM_DEF (angle DIM_POINT DIM_SIDE)
DIM_OFFS)
                 DIM_OBJ (subst (cons 10 DIM_DEF) (assoc 10 DIM_ENT)
DIM_ENT)
           )
           (entmod DIM_OBJ)
         )
       )
     )
   )
   (if DIM_PICK (prompt "\nThis is neither a Rotated nor an Aligned
Dimension."))
 )
 (command ".undo" "end")
 ;(RESTORE)
 (princ)
)

Link to comment
Share on other sites

i'm not sure if this is what you're looking for, but this is what i use in my office. I usually just draw one overall dimension and then i use this lisp to split the dimension at every point needed. You can also use it to join dimensions if you make a mistake.

 

Command is dimsplit and dimjoin.

 

(defun c:dimsplit (/ obj_pick dim_pick dim_ent dim_node1 dim_node2 dim_def
dim_point dim_obj)
 ;(store)
 (command ".undo" "group")
 ;(setvar "osmode" 183)
 (setq dim_pick 1)
 (while (and dim_pick (/= obj_pick "dimension"))
   (setq dim_pick (entsel "\nselect dimension: "))
   (if dim_pick
     (progn
       (setq obj_pick (cdr (assoc 0 (entget (car dim_pick))))
             dim_ent (entget (car dim_pick))
       )
       (if (/= obj_pick "dimension") (prompt "\nthis is not a dimension
object."))
     )
   )
 )
 (if (or (= (cdr (assoc 70 dim_ent)) 32) ; if aligned or rotated dimension
         (= (cdr (assoc 70 dim_ent)) 160)
         (= (cdr (assoc 70 dim_ent)) 33)
         (= (cdr (assoc 70 dim_ent)) 161)
     )
   (progn
     (setq dim_node1 (cdr (assoc 13 dim_ent))
           dim_node2 (cdr (assoc 14 dim_ent))
           dim_def (cdr (assoc 10 dim_ent))
           dim_point (getpoint "\npick split point: ")
     )
     (if dim_point
       (progn
         (if (or (= (cdr (assoc 70 dim_ent)) 33) (= (cdr (assoc 70
dim_ent)) 161)) ; if aligned dimension, reset split point to align between
nodes
           (setq dim_point (inters (polar dim_point (angle dim_def
dim_node2) 12.0) dim_point dim_node1 dim_node2 nil))
         )
         (setq dim_obj (subst (cons 13 dim_point) (assoc 13 dim_ent)
dim_ent))
         (entmod dim_obj)
         (command "copy" dim_pick "" dim_point dim_point)
         (setq dim_ent (entget (entlast))
               dim_obj (subst (cons 14 dim_node1) (assoc 14 dim_ent)
dim_ent)
         )
         (entmod dim_obj)
       )
     )
   )
   (if dim_pick (prompt "\nthis is neither a rotated nor an aligned
dimension."))
 )
 (command ".undo" "end")
 ;(restore)
 (princ)
)

(defun c:dimjoin (/ obj1_pick dim1_pick dim1_ent dim1_node1 dim1_node2
dim1_obj
                   obj2_pick dim2_pick dim2_ent dim2_node1 dim2_node2
dimcase)
 ;(store)
 (command ".undo" "group")
 ;(setvar "osmode" 183)
 (setq dim1_pick 1
       dim2_pick 1
 )
 (while (and dim1_pick (/= obj1_pick "dimension"))
   (setq dim1_pick (entsel "\nselect first dimension: "))
   (if dim1_pick
     (progn
       (setq obj1_pick (cdr (assoc 0 (entget (car dim1_pick))))
             dim1_ent (entget (car dim1_pick))
       )
       (if (/= obj1_pick "dimension") (prompt "\nthis is not a dimension
object."))
     )
   )
 )
 (if (or (= (cdr (assoc 70 dim1_ent)) 32) ; if aligned or rotated dimension
         (= (cdr (assoc 70 dim1_ent)) 160)
         (= (cdr (assoc 70 dim1_ent)) 33)
         (= (cdr (assoc 70 dim1_ent)) 161)
     )
   (progn
     (if (= obj1_pick "dimension")
       (progn
         (while (and dim2_pick (/= obj2_pick "dimension"))
           (setq dim2_pick (entsel "\nselect second dimension: "))
           (if dim2_pick
             (progn
               (setq obj2_pick (cdr (assoc 0 (entget (car dim2_pick))))
                     dim2_ent (entget (car dim2_pick))
               )
               (if (/= obj2_pick "dimension") (prompt "\nthis is not a
dimension object."))
             )
           )
         )
         (if (or (= (cdr (assoc 70 dim2_ent)) 32) ; if aligned or rotated
dimension
                 (= (cdr (assoc 70 dim2_ent)) 160)
                 (= (cdr (assoc 70 dim2_ent)) 33)
                 (= (cdr (assoc 70 dim2_ent)) 161)
             )
           (progn
             (setq dim1_node1 (cdr (assoc 13 dim1_ent))
                   dim1_node2 (cdr (assoc 14 dim1_ent))
                   dim2_node1 (cdr (assoc 13 dim2_ent))
                   dim2_node2 (cdr (assoc 14 dim2_ent))
             )
      (if (= (fix (distance dim1_node2 dim2_node1)) 0.0)
        (setq dim1_obj (subst (cons 14 dim2_node2) (assoc 14 dim1_ent)
dim1_ent) dimcase 1)
      )
      (if (= (fix (distance dim1_node2 dim2_node2)) 0.0)
               (setq dim1_obj (subst (cons 14 dim2_node1) (assoc 14
dim1_ent) dim1_ent) dimcase 2)
      )
      (if (= (fix (distance dim1_node1 dim2_node1)) 0.0)
        (setq dim1_obj (subst (cons 13 dim2_node2) (assoc 13 dim1_ent)
dim1_ent) dimcase 3)
      )
      (if (= (fix (distance dim1_node1 dim2_node2)) 0.0)
        (setq dim1_obj (subst (cons 13 dim2_node1) (assoc 13 dim1_ent)
dim1_ent) dimcase 4)
      )
      (if dimcase
        (progn
                 (entmod dim1_obj)
                 (command "erase" dim2_pick "")
        )
        (prompt "\ndimensions are not coincident.")
             )
             )
           (if dim2_pick (prompt "\nthis is neither a rotated nor an
aligned dimension."))
         )
       )
     )
   )
   (if dim1_pick (prompt "\nthis is neither a rotated nor an aligned
dimension."))
 )
 (command ".undo" "end")
 ;(restore)
 (princ)
)

(defun c:dimdivide (/ obj_pick dim_pick dim_ent dim_node1 dim_node2 dim_def
dim_point dim_obj)
 ;(store)
 (command ".undo" "group")
 ;(setvar "osmode" 183)
 (setq dim_pick 1)
 (while (and dim_pick (/= obj_pick "dimension"))
   (setq dim_pick (entsel "\nselect dimension: "))
   (if dim_pick
     (progn
       (setq obj_pick (cdr (assoc 0 (entget (car dim_pick))))
             dim_ent (entget (car dim_pick))
       )
       (if (/= obj_pick "dimension") (prompt "\nthis is not a dimension
object."))
     )
   )
 )
 (if (or (= (cdr (assoc 70 dim_ent)) 32) ; if aligned or rotated dimension
         (= (cdr (assoc 70 dim_ent)) 160)
         (= (cdr (assoc 70 dim_ent)) 33)
         (= (cdr (assoc 70 dim_ent)) 161)
     )
   (progn
     (if (not dim_div) (setq dim_div 2))
     (initget 6)
     (setq dim_div (defnum dim_div "\nnumber of divisions"))
     (if (and (= obj_pick "dimension") (> dim_div 1))
       (progn
         (setq dim_ent (entget (car dim_pick))
               dim_node1 (cdr (assoc 13 dim_ent))
               dim_node2 (cdr (assoc 14 dim_ent))
               dim_def (cdr (assoc 10 dim_ent))
               dim_point (polar dim_node1 (angle dim_node1 dim_node2) (/
(distance dim_node1 dim_node2) dim_div))
               dim_obj (subst (cons 14 dim_point) (assoc 14 dim_ent)
dim_ent)
         )
         (entmod dim_obj)
         (setq dim_node2 (cdr (assoc 14 dim_obj)))
         (command "copy" dim_pick "" dim_node1 dim_node2)
         (setq dim_ent (entget (entlast))
               dim_obj (subst (cons 10 dim_def) (assoc 10 dim_ent) dim_ent)
         )
         (entmod dim_obj)
         (repeat (- dim_div 2)
           (command "copy" (entlast) "" dim_node1 dim_node2)
           (setq dim_ent (entget (entlast))
                 dim_obj (subst (cons 10 dim_def) (assoc 10 dim_ent)
dim_ent)
           )
           (entmod dim_obj)
         )
       )
     )
   )
   (if dim_pick (prompt "\nthis is neither a rotated nor an aligned
dimension."))
 )
 (command ".undo" "end")
 ;(restore)
 (princ)
)

(defun c:dimoffset (/ obj_pick dim_side dim_pick dim_ent dim_node1 dim_node2
dim_int dim_def dim_point dim_obj)
 ;(store)
 (command ".undo" "group")
 (if (not dim_offs) (setq dim_offs (* 0.375 (getvar "dimscale"))))
 (initget 2)
 (setq dim_offs (defdist dim_offs "specify offset distance"))
 (setq dim_pick 1 obj_pick 1)
 (while (and dim_pick (/= obj_pick "dimension"))
   (setq dim_pick (entsel "\nselect dimension to offset: "))
   (if dim_pick
     (progn
       (setq obj_pick (cdr (assoc 0 (entget (car dim_pick))))
             dim_ent (entget (car dim_pick))
       )
       (if (/= obj_pick "dimension") (prompt "\nthis is not a dimension
object."))
     )
   )
 )
 (if (or (= (cdr (assoc 70 dim_ent)) 32) ; if aligned or rotated dimension
         (= (cdr (assoc 70 dim_ent)) 160)
         (= (cdr (assoc 70 dim_ent)) 33)
         (= (cdr (assoc 70 dim_ent)) 161)
     )
   (progn
     (setq dim_side (getpoint "\nspecify point on side to offset: "))
     (if dim_side
       (if (and (= obj_pick "dimension") (> dim_offs 0))
         (progn
           (setvar "osmode" 0)
           (setq dim_ent (entget (car dim_pick))
                 dim_node1 (cdr (assoc 13 dim_ent))
                 dim_node2 (cdr (assoc 14 dim_ent))
                 dim_def (cdr (assoc 10 dim_ent))
                 dim_int (polar dim_side (angle dim_def dim_node2) 12.0)
                 dim_point (inters (polar dim_def (+ (angle dim_def
dim_node2) (dtr 90.0)) 12.0) dim_def dim_side dim_int nil)
           )
           (command "copy" dim_pick "" dim_node2 (polar dim_node2 (angle
dim_point dim_side) dim_offs))
           (setq dim_ent (entget (entlast))
                 dim_obj (subst (cons 13 dim_node1) (assoc 13 dim_ent)
dim_ent)
           )
           (entmod dim_obj)
           (setq dim_ent (entget (entlast))
                 dim_obj (subst (cons 14 dim_node2) (assoc 14 dim_ent)
dim_ent)
           )
           (entmod dim_obj)
           (setq dim_ent (entget (entlast))
                 dim_def (polar dim_def (angle dim_point dim_side)
dim_offs)
                 dim_obj (subst (cons 10 dim_def) (assoc 10 dim_ent)
dim_ent)
           )
           (entmod dim_obj)
         )
       )
     )
   )
   (if dim_pick (prompt "\nthis is neither a rotated nor an aligned
dimension."))
 )
 (command ".undo" "end")
 ;(restore)
 (princ)
)

 

its nice alternative :) thank u

 

i actually want the dim tool to toggle automaticaly to continue tool after the dim line position is setted

Link to comment
Share on other sites

Alright so, I usually use DIMLINEAR, but trying out DIM, why don't you type in 'C' after you you draw your first dimension? C is for continue and you can keep going indefinitely.

Link to comment
Share on other sites

Alright so, I usually use DIMLINEAR, but trying out DIM, why don't you type in 'C' after you you draw your first dimension? C is for continue and you can keep going indefinitely.

 

u mean DCO....

 

as i see it,

 

after you click start and end points , the next point sould continue the dim automatically. why its not like that?

Link to comment
Share on other sites

u mean DCO....

 

as i see it,

 

after you click start and end points , the next point sould continue the dim automatically. why its not like that?

 

Well, I'm using AutoCAD 2016... so it might be a version issue here. This is what I see after I've completed the first dimension

http://imgur.com/mOkEkdy

Link to comment
Share on other sites

its defently version issue,

im using acad 2010,

 

LISP is the only why for me?

 

Perhaps... but you could try the following command: "DIMCONTINUE" and see if that works in 2010. If it does, you could write a LISP that runs the DIM command and the DIMCONTINUE command together or you could create a shortcut key to run the DIMCONTINUE command

 

I.e. set this to a shortcut ^C^C_Dimlinear;\\\_dimcontinue;

Link to comment
Share on other sites

I'm not sure if this is what you're looking for, but this is what I use in my office. I usually just draw one overall dimension and then I use this LISP to split the dimension at every point needed. You can also use it to join dimensions if you make a mistake.

 

Command is DIMSPLIT and DIMJOIN.

 

(defun C:DIMSPLIT (/ OBJ_PICK DIM_PICK DIM_ENT DIM_NODE1 DIM_NODE2 DIM_DEF
DIM_POINT DIM_OBJ)
 ;(STORE)
 (command ".undo" "group")
 ;(setvar "osmode" 183)
 (setq DIM_PICK 1)
 (while (and DIM_PICK (/= OBJ_PICK "DIMENSION"))
   (setq DIM_PICK (entsel "\nSelect Dimension: "))
   (if DIM_PICK
     (progn
       (setq OBJ_PICK (cdr (assoc 0 (entget (car DIM_PICK))))
    .....

 

i've tried your lisp,

its really powerful idea of dimensioning,

but why its stops after one point?

Link to comment
Share on other sites

i've tried your lisp,

its really powerful idea of dimensioning,

but why its stops after one point?

 

To be fair, this is a LISP I use, not one I wrote. But I believe it stops after one because it creates two new dimension lines and it wouldn't know where to continue. Did you try my previous suggestion of assigning DIMCONTINUE to a shortcut key?

Link to comment
Share on other sites

To be fair, this is a LISP I use, not one I wrote. But I believe it stops after one because it creates two new dimension lines and it wouldn't know where to continue. Did you try my previous suggestion of assigning DIMCONTINUE to a shortcut key?

 

not yet. if you can please add coder credit,

and im sure going to try DIMCONTINUE and to adjust the code if im allowed.

Link to comment
Share on other sites

not yet. if you can please add coder credit,

and im sure going to try DIMCONTINUE and to adjust the code if im allowed.

 

This is a code I got from a forum. It's not stolen and was given freely to be used however way you want. So feel free to modify it.

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