• このフォーラムは、www.cad3d.it/forum1 - イタリアのデザインコミュニティの機械翻訳です。いくつかの用語は正しく翻訳されていません。

polylineaからセクションへの

  • Thread starter Thread starter Zanna91
  • Start date Start date

Zanna91

Guest
questa routine permette di trasformare una polilinea che rappresenta l'andamento altimetrico del terreno in un file di sezione contenente num,x,y di ogni punto.

Code:
(defun c:creasez ()
        (setq pol(entsel "\n....... seleziona la polilinea : "))

(if (/= pol nil)(progn
(setq nomefile(getstring "\n....... nome file txt: "))
(setq separatore(getstring "\n....... carattere separatore di num x y: "))
(if (= separatore "")(setq separatore " "))

(setq numsez(getstring "\n....... numero sezione: "))
(setq progsez(getstring "\n....... progressiva sezione: "))
(setq ff(open (strcat nomefile ".txt") "a"))
(write-line numsez ff)
(write-line progsez ff)
      
(if (= (cdr(assoc 0 (entget (car pol)))) "lwpolyline")(progn
		(setq li-crea nil)
		(setq w(getpoint "\n....... punto sulla linea di riferimento : "))
		(setq quota(getreal "     => a quota : "))
        	(setq scalay(getreal "\n....... rapporto scala distanze / scala quote : "))

        	(setq qrif(cadr w))
		(setq conta 0)
		(setq i 0)

		(setq lwp(entget(car pol)))
		(repeat (length lwp)
			(setq lwele(nth i lwp))
			(if (= (car lwele) 10)(progn
					(setq x(cadr lwele))
					(setq y(caddr lwele))
					(setq y(+ (/ (- y qrif) scalay) quota))
					(setq conta(+ conta 1))
					(setq xconta(itoa conta))
(if (= conta 1)	(setq xprog x))
(setq x(- x xprog))
(write-line (strcat xconta separatore (rtos x 2 2) separatore (rtos y 2 2)) ff)
 						   )
			)
		(setq i (+ i 1))
		)
(close ff)
        	)                  			;;;;;;<<<fine del progn che riguarda la lwpolyline>>>




(if (and (= (cdr(assoc 0 (entget (car pol)))) "polyline")(/= pol nil))(progn
        (setq li-crea nil)
        (setq w(getpoint "\n....... punto sulla linea di riferimento : "))
        (setq quota(getreal "     => a quota : "))
        (setq scalay(getreal "\n....... rapporto scala distanze / scala quote : "))
        (setq qrif(cadr w))
        (setq pol-princ(entget (car pol)))
        (setq vertice(entnext (car pol)))
        (setq vert(entget vertice))
        (setq conta 0)

     (while (/= (cdr (assoc 0 vert)) "seqend")
                (setq x(car(cdr(assoc 10 vert))))
                (setq y(cadr(cdr(assoc 10 vert))))
                (setq y(+ (/ (- y qrif) scalay) quota))
                
                (setq conta(+ conta 1))
                (setq xconta(itoa conta))

(if (= conta 1)	(setq xprog x))
(setq x(- x xprog))
(write-line (strcat xconta separatore (rtos x 2 2) separatore (rtos y 2 2)) ff)
                
                (setq vertice(entnext vertice))
                (setq vert(entget vertice))
     )
(close ff)

        )                  ;;;;;;<<<fine dell'if che riguarda la polilinea>>>
        (progn
        (princ "    deve essere una polyline o una lwpolyline!  < premi un tasto per proseguire >")
        (getstring)
        (princ "\r                                                                                                         ")
        )
        )
))
))
;---------------------------------------------------------------------
(princ "\n <copyright ing. claudio granuzzo - 2002>  digitare creasez per lanciare il programma!")
(princ)

fonte: www.sepram.com


saluti,
giacomo
 

Forum statistics

Threads
46,674
Messages
380,976
Members
2
Latest member
loop80
このフォーラムは、www.cad3d.it/forum1 - イタリアのデザインコミュニティの機械翻訳です。いくつかの用語は正しく翻訳されていません。

Members online

No members online now.
Back
Top