(Defun C:DIMISO ()
  (Setvar "Cmdecho" 0)
  (Setq DS (Getvar "Dimscale"))
  (Setq DA (Getvar "Dimasz"))
  (Setq DT (Getvar "Dimtxt"))
  (Setq DE (Getvar "Dimexe"))
  (Setq DO (Getvar "Dimexo"))
  (Setq A1 (/ Pi 180.0))
  (Setq A2 (/ 180 Pi))
  (Initget 1 "L R")
  (Setq A (Getkword "\nLeft/Right: "))
  (Setq P1 
     (Getpoint 
      "\nFirst point of the first Construction-Line or RETURN to select: "))
  (Cond
    ((= nil P1)
      (Setq P2 (Entsel))
      (While
        (= nil P2)
          (Princ "\nNo object found!")
          (Setq P2 (Entsel))
      )
      (Setq P2 (Osnap (Cadr P2) "_MID"))
      (Setq P1 (Osnap P2 "_END"))
      (Setq P2 (Polar P1 (Angle P1 P2) (* 2.0 (Distance P1 P2))))
    )
    ((Boundp 'P1)
      (Initget 1)
        (Setq P2 (Getpoint "\nFirst point of the second Construction-Line: "))
    )
  )
  (Initget 1)
  (Setq P3 (Getpoint "\nPlace dimensioning line: "))
  (Cond
    ((= A "L")
      (Setq B 150 C 30 G "ISOAROW2" H "ISOTEXT2" I 30)
      (Setpt)
      (If
        (< (Cadr P6) (Cadr P7))
          (Setq F -1)
          (Setq F 1)
      )
      (Dimit)
    )
    ((= A "R")
      (Setq B 30 C 150 G "ISOAROW1" H "ISOTEXT1" I 330)
      (Setpt)
      (If
        (< (Cadr P6) (Cadr P7))
          (Setq F -1)
          (Setq F 1)
      )
      (Dimit)
    )
  )
)

(Defun Setpt ()
  (Setq P4 (Inters P1 (Polar P1 (* A1 B) 1) P3 (Polar P3 (* A1 C) 1) Onseg))
  (Setq P5 (Inters P2 (Polar P2 (* A1 B) 1) P3 (Polar P3 (* A1 C) 1) Onseg))
  (Setq P6 (Polar P4 (Angle P4 P5) (/ (Distance P4 P5) 2)))
  (Setq P7 (Polar P1 (Angle P1 P2) (/ (Distance P1 P2) 2)))
)

(Defun Dimit ()
  (Command "_LINE" (Polar P1 (Angle P1 P4) (* DO DS)) (Polar P4 (Angle P1 P4)
    (* DE DS)) "" "_LINE" (Polar P2 (Angle P2 P5) (* DO DS)) (Polar P5
    (Angle P2 P5) (* DE DS)) "" "_LINE" P4 P5 "")
  (Setq P6 (Polar P6 (Angle P1 P4) (* F (* DT DS))))
  (Setq D1 (Rtos (Distance P4 P5) (Getvar "Lunits") (Getvar "Luprec")))
  (Command "_insert" G P4 (* DS DA) "" (* A2 (Angle P4 P5)))
  (Command "_insert" G P5 (* DS DA) "" (* A2 (Angle P5 P4)))
  (Prompt "\nDimensioning text <")
  (Prompt D1)
  (Setq D2 (Getstring t ">: "))
  (If
    (= D2 "")
      (Setq D D1)
      (Setq D D2)
  )
  (Command "_Text" "_S" H "_C" P6 (* DS DT) I D)
)
