View Full Version : Lisp for dimensioning to the centre of a wall?
victoreric
12th Feb 2005, 08:01 am
I'm wondering if anyone has a lisp that will let me draw a dimension line from the centre of a wall. It's similar to the middle.lsp where you pick to points and it dimensions from the middle of those two points.
Thanks, any info will help.
Eric
Adesu
14th Feb 2005, 10:13 am
I'm wondering if anyone has a lisp that will let me draw a dimension line from the centre of a wall. It's similar to the middle.lsp where you pick to points and it dimensions from the middle of those two points.
Thanks, any info will help.
Eric
Hi Eric,do you mean like this may be
; cd is stand for create dimension
; Design by Ade Suharna <mteybid@yuasabattery.co.id>
; 14 February 2005
; Program no.189/02/2005
; edit by
(defun c:cd (/ olddimtxt olddimdec olddimtad olddimse1
olddimse2 olddimexe olddimexo olddimgap
olddimtih p1 p2 p3 p4 ent3 ent4)
(setq oldosmode (getvar "osmode")) ; get osmode setting
(setvar "osmode" 0) ; osmode set to 0
(setq oldcmdecho (getvar "cmdecho")) ; get cmdecho setting
(setvar "cmdecho" 0) ; cmdecho set to 0
(setq olddimtxt (getvar "dimtxt")
olddimdec (getvar "dimdec")
olddimtad (getvar "dimtad")
olddimse1 (getvar "dimse1")
olddimse2 (getvar "dimse2")
olddimexe (getvar "dimexe")
olddimexo (getvar "dimexo")
olddimgap (getvar "dimgap")
olddimtih (getvar "dimtih")
oldfilletrad (getvar "filletrad")
olddimblk (getvar "dimblk")
olddimasz (getvar "dimasz")
olddimlim (getvar "dimlim")
olddimtm (getvar "dimtm")
olddimtol (getvar "dimtol")
olddimtdec (getvar "dimtdec"))
(setvar "dimtxt" 1) ; set text height
(setvar "dimdec" 2) ; set decimal presicion
(setvar "dimtad" 1) ; set vertical position
(setvar "dimse1" 0) ; set Suppresses display of the first extension line
(setvar "dimse2" 0) ; set Suppresses display of the second extension line
(setvar "dimexe" 1) ; set Specifies how far to extend the extension line beyond the dimension line
(setvar "dimexo" 1) ; set Specifies how far extension lines are offset from origin points
(setvar "dimgap" 1) ; set Sets the distance around the dimension text when the dimension line breaks to accommodate dimension text
(setvar "dimtih" 0) ; set Controls the position of dimension text inside the extension lines for all dimension types except ordinate
(setvar "filletrad" 3) ; set radius of follet
(setvar "dimblk" "_open") ; set style arrow
(setvar "dimasz" 1) ; set arrow size
(setvar "dimlim" 1) ; set limit
(setvar "dimtm" 5) ; set lower limit
(setvar "dimtol" 1) ; set limit
(setvar "dimtdec" 0) ; set limit presicion
(initget 1 "V OR H")
(setq dir (getkword "\nENTER DIRECTION OF MEASURING <V OR H>: "))
(setq p1 (getpoint "\nCLICK FIRST END LINE/POINT TO MEASURING: "))
(setq p2 (getpoint "\nCLICK SECOND END LINE/POINT TO MEASURING: "))
(setq p3 (getpoint "\nCLICK LOCATION FOR TEXT: "))
(command "_dimlinear" p1 p2 dir p3 "")
;(command "_dimlinear" p3 p4 "h" ent2 "")
;(command "_fillet" ent5 ent6 "")
;(command "_dimradius" ent8 ent9 "")
(setvar "osmode" oldosmode) ; return setting
(setvar "cmdecho" oldcmdecho)
(setvar "dimtxt" olddimtxt)
(setvar "dimdec" olddimdec)
(setvar "dimtad" olddimtad)
(setvar "dimse1" olddimse1)
(setvar "dimse2" olddimse2)
(setvar "dimexe" olddimexe)
(setvar "dimexo" olddimexo)
(setvar "dimgap" olddimgap)
(setvar "dimtih" olddimtih)
(setvar "dimblk" olddimblk)
(setvar "dimasz" olddimasz)
(setvar "dimlim" olddimlim)
(setvar "dimtm" olddimtm)
(setvar "dimtol" olddimtm)
(setvar "dimtdec" olddimtdec)
(princ)
(command "_redraw")
)
victoreric
20th Feb 2005, 03:01 am
No, this only creates a dimension the standard way. What I want to do is to create a dimension starting from the midpoint of a wall thickness.
Usually what I have to do is to draw a line between the double wall lines, then dimension to the midpoint of that line and then erase that line.
As you can see, it's alot of work.
I've tried to play around with it but I'm no lisp expert. This is what I got so far, but this only gets me the first point of my dimension line. I need some help finishing the second point so that it also automatically selects the center of the wall.
Hope I'm making sense.
(defun c:dlm ( / SAVE_CMDE SAVE_ORTHO SAVE_OSMODE pt1 pt2 dist ang dist_ midpt)
(graphscr)
(setq SAVE_CMDE (getvar "cmdecho"))
(setq SAVE_ORTHO (getvar "orthomode"))
(setq SAVE_OSMODE (getvar "osmode"))
(setvar "cmdecho" 0)
(setvar "orthomode" 0)
(setvar "osmode" 512)
(setq pt1 (getpoint "\nPick first point: "))
(setvar "osmode" 128)
(setq pt2 (getpoint "\nPick second point: " pt1))
(setq dist (distance pt1 pt2))
(setq ang (angle pt1 pt2))
(setq dist_ (/ dist 2))
(setq midpt (polar pt1 ang dist_))
(command "dimlinear" midpt)
(setq pt1 (getpoint "\nPick first point: "))
(setvar "osmode" 128)
(setq pt2 (getpoint "\nPick second point: " pt1))
(setq dist (distance pt1 pt2))
(setq ang (angle pt1 pt2))
(setq dist_ (/ dist 2))
(setq midpt (polar pt1 ang dist_))
(setvar "cmdecho" SAVE_CMDE)
(setvar "orthomode" SAVE_ORTHO)
(setvar "osmode" SAVE_OSMODE)
(princ)
);defun
Wozza
21st Feb 2005, 02:01 am
You were pretty close with that, Victoreric.
After you've selected the first mid-point (midpt_01), you should select a second (midpt_02) and then use both these two points in the DIMLINEAR command.
You'd done all the hard work, so it was easy enough to copy and paste a couple of lines to get it running. I hope that this what you need...
(defun c:dlm ( / SAVE_CMDE SAVE_ORTHO SAVE_OSMODE pt1 pt2 dist ang dist_ midpt)
(graphscr)
(setq SAVE_CMDE (getvar "cmdecho")
SAVE_ORTHO (getvar "orthomode")
SAVE_OSMODE (getvar "osmode")
);setq
(setvar "cmdecho" 0)
(setvar "orthomode" 0)
(setvar "osmode" 512)
(setq pt1 (getpoint "\nPick first point: "))
(setvar "osmode" 128)
(setq pt2 (getpoint pt1 "\nPick second point: ")
dist (distance pt1 pt2)
ang (angle pt1 pt2)
dist_(/ dist 2)
midpt_01 (polar pt1 ang dist_)
);setq
(setvar "osmode" 512)
(setq pt3 (getpoint pt2 "\nPick third point: "))
(setvar "osmode" 128)
(setq pt4 (getpoint pt3 "\nPick fourt point: ")
dist (distance pt3 pt4)
ang (angle pt3 pt4)
dist_(/ dist 2)
midpt_02 (polar pt3 ang dist_)
);setq
(command "dimlinear" midpt_01 midpt_02)
(setvar "cmdecho" SAVE_CMDE)
(setvar "orthomode" SAVE_ORTHO)
(setvar "osmode" SAVE_OSMODE)
(princ)
);defun
Adesu
21st Feb 2005, 02:08 am
After your code revised,here
(defun c:dlm ( / SAVE_CMDE SAVE_ORTHO SAVE_OSMODE pt1 pt2 dist ang dist_ midpt)
(graphscr)
(setq SAVE_CMDE (getvar "cmdecho"))
(setq SAVE_ORTHO (getvar "orthomode"))
(setq SAVE_OSMODE (getvar "osmode"))
(setvar "cmdecho" 0)
(setvar "orthomode" 0)
(setvar "osmode" 512)
(setq pt1 (getpoint "\nPick first point: "))
(setvar "osmode" 128)
(setq pt2 (getpoint "\nPick second point: " pt1))
(setq dist (distance pt1 pt2))
(setq ang (angle pt1 pt2))
(setq dist_ (/ dist 2))
(setq midpt (polar pt1 ang dist_))
(command "dimlinear" pt2 midpt pause "") ; pause to detemine location of text
(setvar "cmdecho" SAVE_CMDE)
(setvar "orthomode" SAVE_ORTHO)
(setvar "osmode" SAVE_OSMODE)
(princ)
);defun
Powered by vBulletin™ Version 4.1.2 Copyright © 2013 vBulletin Solutions, Inc. All rights reserved.