Hi ,I am using this code to dimension polylines for Cross sections
To work correct the cross section must be in the correct position (0,Datum). This is not all the times possible
This code works for 2 layers of ground. Select the ground line and the pick insert point for length and insert point for elevetion.
So I want to do some updates
1) Pick a point of the theoretic (0,Datum) (to correct the length and elevetion if the polyline is not in (0,Datum))
2) Only for layer2 draw 4 extra lines (look the test.dwg )
The 3 and 4 steps in test.dwg already exist in the code, but the elevetion and distance will be correct with the step 1
Look the test.DWG to understand Better.
(if (= s
"Function cancelled") (princ "\nVERTEXT - cancelled: ") ) ;_ end of if
(resetting)
(princ "SYSTEM VARIABLES have been reset\n") ) ;_ end of defun
(defun setv
(systvar newval
) ) ;_ end of defun
(defun setting
() (setq oerr
*error*) (setq *error* err
) (setv
"CMDECHO" 0) (setv
"BLIPMODE" 0))
(defun resetting
() (rsetv
"CMDECHO") (rsetv
"BLIPMODE") (setq *error* oerr
))
(defun vertext
(mode
/ en vlist
) (if (= (dxf
0 en
) "LWPOLYLINE") (setq vlist
(get
-lwvlist en
)) (setq vlist
(get
-plvlist en
)) ) ;_ end of if
(write-it vlist en mode)
) ;_ end of defun
(defun get
-en
(/ no
-ent en msg1 msg2
) en nil
msg1 "\nselect polyline: "
msg2 "\nTry again !!!."
) ; setq
(or (= (dxf
0 en
) "LWPOLYLINE") (= (dxf
0 en
) "POLYLINE")) ; or ) ; and
) ; if
) ; while
en
) ; get-en
(defun get
-lwvlist
(en
/ elist num
-vert vlist
) vlist nil
) ; setq
) ; setq
) ; setq
) ; repeat
vlist
) ; get-lwvlist
(defun get
-plvlist
(en
/ vlist
) ) ; setq
(while (/= "SEQEND" (dxf
0 en
)) ) ; while
vlist
) ; get-plvlist
(defun write
-it
(vlst en mode
/ newvlist msg3 fname
) vlst
) ;_ mapcar
msg3 "Polyline vertex file" ;FNAME (getfiled MSG3 "" "txt" 1)
) ; setq
(write-header)
(write-vertices newvlist mode)
) ;_ write-it
(defun write
-header
(/ str
) (setq str
" POLYLINE VERTEX POINTS") ) ;_ setq
) ;_ write-header
(defun write
-vertices
(newvlist mode
/ xstr ystr zstr str l
) ;(setvar 'osmode 0)
(setvar "OSMODE" 13) ; NODE,END,CENTER ("1")
) ;_ end of cond
) ;_ end of setq
(command "_layer" "_m" "Layer1 text" "_c" "7" "" "") ) ;_ end of if
(command "_layer" "_m" "layer2 text" "_c" "7" "" "") ) ;_ end of if
) ;_ end of progn
"0.35"
"1.75"
) ;_ end of if
) ;_ end of setq
(setq gpty
(getpoint "\nSelect insert point for elevetion: ")) ystr
(rtos (/ (nth 1 item
) scf
) 2 2) str
(strcat xstr
(spaces xstr
) ystr
(spaces ystr
) zstr
) ;_ strcat ) ; setq
; (write-line STR F1)
;(command "style" "PMSF-TEXT 2" "Arial" "" "" "" "" "")
) ; foreach
) ; write-vertices
(defun spaces
(str
/ field num char space
) char " "
space ""
) ;_ setq
) ;_ spaces
(defun c:test
() (setq scf
1) (setting
) (vertext t
) (resetting
) (princ))
Thanks