Aller au contenu

[RESOLU] Quadrillage de référence


Messages recommandés

Posté(e)

Coucou

 

franchement j'ai perdu le fil tellement c'est alambiqué...

alors je vais recommencer simplement

fais un test dans un dessin vierge et en donnant une altitude il va te dessiner une "droite" dont la valeur Y sera ce que tu appelles NGF et qui est une altitude en élévation

Tiens-moi au courant et on fera du pas à pas...

Est-ce que ces lignes te vont ?

 

(setq ngf (getreal "\nValeur altimétrique ?\n"))
(command "_xline" "h" (list 0 ngf 0) "")

Posté(e)

EDIT 19.07.2019 :

 

Bonjour,

 

J'ai réussi à trouver une solution et je pense avoir terminer mon programme.

 

Merci à ceux qui m'ont aidé (et supporter) !

Mention spécial à didier :D

 

Vous trouverez mon programme dans le message suivant et si jamais vous avez des idées pour améliorer ou simplifier mon programme je suis toute ouïe !

 

Bonne journée.

 

Ksow

Posté(e)

EDIT 19.07.2019 : Je transmets ici mon programme au cas où cela pourrait servir.

 

(finir le programme le jour de son anniversaire c'est quand même assez comique)

 

;;                                      +---------------------------------------------------+
;;                              	|   	Projet : QUADRILLAGE DE REFERENCE	    |
;;                                      +---------------------------------------------------+

;;;*****************
;;;     DONNEES
;;;*****************

(defun init ()

(setq acrobj (getvar "OSMODE"))
(setq units_angle (getvar "AUNITS"))
(setq nbdeci (getvar "LUPREC"))
(setq attreq (getvar "ATTREQ"))
(setq attdia (getvar "ATTDIA"))
(setq units (getvar "INSUNITS"))

(setvar "OSMODE" 167)
(setvar "AUNITS" 0)
(setvar "LUPREC" 0)
(setvar "ATTREQ" 1)
(setvar "ATTDIA" 0)

)

(defun reinit ()

(setvar "OSMODE" acrobj)
(setvar "AUNITS" units_angle)
(setvar "PLINEWID" 0)
(setvar "ATTREQ" attreq)
(setvar "ATTDIA" attdia)
(setvar "INSUNITS" units)
(setvar "LUPREC" nbdeci)

)

(defun Ins_Bloc (Pt Ht_NGF)

(setq bloc_name (strcat "BLOC_" axe unit))
(command "-INSERER" bloc_name Pt 1 1 0 Ht_NGF)

)


;;; *****************
;;;     PROGRAMME
;;; *****************

(defun c:NGF ()

(init)
(if (not (tblsearch "LAYER" "00-QUADRILLAGE-NGF"))
	(command "_LAYER" "N" "00-QUADRILLAGE-NGF" "CO" "230" "00-QUADRILLAGE-NGF" "TL" "AXES" "00-QUADRILLAGE-NGF" "")
)
(command "_LAYER" "CH" "00-QUADRILLAGE-NGF" "")
(setvar "CECOLOR" "DUCALQUE")
(initget 1 "MIllimètre CEntimètre MEtre")
(setq Choix_unit (getkword "\nSpécifier l'unité de dessin : [MIllimètre/CEntimètre/MEtre]  "))
(cond
	((= Choix_unit "MIllimètre")
		(setq unit "mm" coeff_unit 1000.0)
		(setvar "INSUNITS" 4)
	)
	((= Choix_unit "CEntimètre")
		(setq unit "cm" coeff_unit 100.0)
		(setvar "INSUNITS" 5)
	)
	((= Choix_unit "MEtre")
		(setq unit "m" coeff_unit 1.0)
		(setvar "INSUNITS" 6)
	)
)
(setq axe "NGF_")
(prompt "\nDessin des axes HORIZONTAUX :")
(initget 1 "Point Distance Saisie")
(setq Choix_trace (getkword "\nVeuillez préciser si vous souhaitez choisir des points ou si vous souhaitez entrer les niveaux NGF [Point/Distance/Saisie] :  "))
(setq Pt_ref (getpoint "\nVeuillez renseigner un point de référence :  "))
(setq Y-Pt_ref (cadr Pt_ref))
(setq X-Pt_ref (- (car Pt_ref) (* 1 coeff_unit)))
(setq Ht_ref (getreal "\nVeuillez renseigner le niveau NGF du point de référence (en m) :  "))
(command "_XLINE" "H" Pt_ref "")
(Ins_Bloc (list X-Pt_ref Y-Pt_ref (caddr Pt_ref)) (strcat (if (< Ht_ref 0) "-" "+") (rtos Ht_ref 2 2) " NGF"))
(cond
	((= Choix_trace "Point")
		(while
		  (setq Pt_Ins (getpoint "\nVeuillez renseigner un point altimétrique (ENTRER pour terminer) :  "))
			(setq Ht_Ins (+ Ht_ref (/ (- (cadr Pt_Ins) Y-Pt_ref) coeff_unit)))
			(setq Pt_Ins (list X-Pt_ref (cadr Pt_Ins) (caddr Pt_ref)))
			(command "_XLINE" "H" Pt_Ins "")
			(Ins_Bloc Pt_Ins (strcat (if (< Ht_Ins 0) "-" "+") (rtos Ht_Ins 2 2) " NGF"))
		)
	)

	;;;;
	((= Choix_trace "Distance")
	 
	(while 
		(setq Pt_1 (getpoint "\nSpécifier le point de départ"))
		(setq Pt_2 (getpoint "\nSpécifier le point suivant"))
	
		(setq Dist_PtSCU (distance Pt_1 Pt_2))

		(setq PtSCU (list X-Pt_ref (+ Y-Pt_ref Dist_PtSCU) (caddr Pt_ref)))
  		(setq NewVal (+ Ht_ref (/ (- (cadr PtSCU) Y-Pt_ref) coeff_unit)))

		(command "_XLINE" "H" PtSCU "")
		(Ins_Bloc PtSCU (strcat (if (< NewVal 0) "-" "+") (rtos NewVal 2 2) " NGF"))
	)	
   
	 )
	;;;;

 
	((= Choix_trace "Saisie")
		(while (setq Ht_Ins (getreal "\nVeuillez renseigner un niveau NGF (en m) (ENTRER pour terminer) :  "))
			(setq Pt_Ins (list X-Pt_ref (+ Y-Pt_ref (* (- Ht_Ins Ht_ref) coeff_unit)) (caddr Pt_ref)))
			(command "_XLINE" "H" Pt_Ins "")
			(Ins_Bloc Pt_Ins (strcat (if (< Ht_Ins 0) "-" "+") (rtos Ht_Ins 2 2) " NGF"))
		)
	)
)
(setq axe "DIST_")
(command "_XLINE" "V" Pt_ref "")
(setq Y-Pt_ref (- (cadr Pt_ref) (* 2 coeff_unit)))
(setq X-Pt_ref (car Pt_ref))
(Ins_Bloc (list X-Pt_ref Y-Pt_ref (caddr Pt_ref)) (strcat "+" "0.00" " m"))
(prompt "\nDessin des axes VERTICAUX :")
(initget 1 "Point Distance Saisie")
(setq Choix_trace (getkword "\nVeuillez préciser si vous souhaitez choisir des points ou si vous souhaitez entrer les distances [Point/Distance/Saisie] :  "))
(setq Dist_ref 0)
(cond
	((= Choix_trace "Point")
		(while
		  	(setq Pt_Ins (getpoint "\nVeuillez renseigner un point distant du point de référence (ENTRER pour terminer) :  "))
			(setq Dist_Ins (+ Dist_ref (/ (- (car Pt_Ins) X-Pt_ref) coeff_unit)))
			(setq Pt_Ins (list (car Pt_Ins) Y-Pt_ref (caddr Pt_ref)))
			(command "_XLINE" "V" Pt_Ins "")
			(Ins_Bloc Pt_Ins (strcat (if (< Dist_Ins 0) "-" "+") (rtos Dist_Ins 2 2) " m"))
		)
	)

	((= Choix_trace "Distance")
	 	(while
		 	(setq Pt_1 (getpoint "\nSpécifier le point de départ"))
			(setq Pt_2 (getpoint "\nSpécifier le point suivant"))
	
			(setq Dist_PtSCU (distance Pt_1 Pt_2))

			(setq PtSCU (list (+ X-Pt_ref Dist_PtSCU) Y-Pt_ref (caddr Pt_ref)))
  			(setq NewVal (+ Ht_ref (/ (- (car PtSCU) X-Pt_ref) coeff_unit)))

			(command "_XLINE" "V" PtSCU "")
			(Ins_Bloc PtSCU (strcat (if (< NewVal 0) "-" "+") (rtos NewVal 2 2) " NGF"))
		)		
   
	 )


	((= Choix_trace "Saisie")
		(while (setq Dist_Ins (getreal "\nVeuillez renseigner une distance par rapport au point de référence (en m) (ENTRER pour terminer) :  "))
			(setq Pt_Ins (list (+ X-Pt_ref (* Dist_Ins coeff_unit)) Y-Pt_ref (caddr Pt_ref)))
			(command "_XLINE" "V" Pt_Ins "")
			(Ins_Bloc Pt_Ins (strcat (if (< Dist_Ins 0) "-" "+") (rtos Dist_Ins 2 2) " m"))
		)
	)
)
(reinit)

)

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité