Aller au contenu

Probleme avec ObjectDCL2007 ?


ASTERIXII

Messages recommandés

Je rencontre des difficultes avec ObjectDCL2007

declaration dans autocad/option des chemins pour arx et lisp

 

Mon code est "instable"

exemple : le dessin de la poutre dessine un triangle au lieu d'un rectangle ?

les cases a cocher fonctionne une fois sur 2

mon code est sommaire (debutant)

 

Une idée ?

 

 					; chargement arx
(defun loadODCL	()

 (if (not (member "objectdcl2007.arx" (arx)))
   (arxload "objectdcl2007.arx" "ObjectDCL2007.arx not found.")
 )
)

(setvar "cmdecho" 0)
(princ "\nType alain pour lancer la commande.")

;*********************************************************************


(defun c:alain ()

 (loadODCL)

 (defun c:DclForm1_QUIT_OnClicked ()
   (Odcl_Form_CloseAll DialogBitStyle)
  (exit)
 )

(defun initialise ()
(setq Epdb nil)
(setq Epdh nil)
(setq x_Aidb nil)
(setq y_Aidb nil)
(setq y_Asdb nil)
(setq hsd nil)
(setq Nref nil)
(setq hauteur nil)
(setq y_Aidh nil)
(setq y_Asdh nil)
(setq hsp nil)
(setq y_hsp nil)
(setq y_epl nil)
(setq x_mur nil)
)
				;****************** verifie option mur
(defun c:DclForm1_check1_mur_OnClicked (nValue /)
(Setq murg (Odcl_Control_GetValue alain_DclForm1_check1_mur))
(if murg (Odcl_Control_SetVisible alain_DclForm1_mur1 1) (Odcl_Control_SetVisible alain_DclForm1_mur1 0))
(if murg (Odcl_Control_SetPicture alain_DclForm1_PictureBox1 104) (Odcl_Control_SetPicture alain_DclForm1_PictureBox1 103))
)



				;BOUTON position de la coupe
 (defun insertion ()
(Odcl_Form_Hide alain_DclForm1 1)
   (setq Ai_DB1 (getpoint "\nPosition de la coupe:"))
   (setq *Ai_DB1* Ai_DB1)	
   (Odcl_Control_SetEnabled alain_DclForm1_Dessin 1)
(Odcl_Form_Hide alain_DclForm1 0)
 )
				;************ BOUTON DESSIN DE LA COUPE

 (defun c:DclForm1_Dessin_OnClicked ()
   (coupe)
 )

				;bouton pour insertion de la coupe
 (defun c:DclForm1_TextButton1_OnClicked ()
   (insertion)
 )


				;************  definition de la coupe
 (defun coupe ()

(initialise)	


			;epaisseur dalle basse
   (Setq Epdb (Odcl_Control_GetText alain_DclForm1_Ep_DB))
				; convertion en numerique sientifique
   (setq Epdb (atof Epdb))

				;epaisseur dalle haute
   (Setq Epdh (Odcl_Control_GetText alain_DclForm1_Ep_DH))
				; convertion en numerique sientifique
   (setq Epdh (atof Epdh))

				; recupere niveau dalle haute dans boite de dialogue
   (Setq hsd (Odcl_Control_GetText alain_DclForm1_Ai_DH)) ;y_Aidh
				; convertion en numerique sientifique
   (setq hsd (atof hsd))
				; recupere niveau de reference dans boite de dialogue
   (Setq Nref (Odcl_Control_GetText alain_DclForm1_As_DB)) ;y_Asdb
				; convertion en numerique sientifique
   (setq Nref (atof Nref))
				; recupere niveau du plafond dans boite de dialogue
   (Setq hsp (Odcl_Control_GetText alain_DclForm1_Ai_PL))
   (setq hsp (atof hsp))
    					; recupere epaisseur mur1
   (Setq ep_mur1 (Odcl_Control_GetText alain_DclForm1_mur1))
   (setq ep_mur1 (atof ep_mur1))
				;Option poutre

  (Setq Poutre (Odcl_Control_GetValue alain_DclForm1_Poutre1))
  (Setq Rpoutre (Odcl_Control_GetText alain_DclForm1_R_poutre))
  (setq Rpoutre (atof Rpoutre))
  (Setq Lpoutre (Odcl_Control_GetText alain_DclForm1_L_poutre))
  (setq Lpoutre (atof Lpoutre))



				;*************** DESSIN DALLE BASSE

				;determine AS_DB1
   (setq x_Aidb (car Ai_DB1))
   (setq y_Aidb (cadr Ai_DB1))


   (setq y_Asdb y_Aidb)
   (setq y_Asdb (+ y_Asdb Epdb))


   (command "_line" Ai_DB1 (list (+ x_Aidb 740) y_Aidb) "")

(setq entite1 (entlast)) ; garde en memoire l'objet ligne


				;*************** DESSIN DALLE HAUTE

				; ajoute a l'origine
   (setq hauteur (- hsd Nref))
   (setq y_Aidh (+ y_Asdb hauteur))

				;*************** dessin Ai dalle haute

   (command "_line" (list x_Aidb y_Aidh) (list (+ x_Aidb 740) y_Aidh) "")
   (setq y_Asdh y_Aidh)
   (setq y_Asdh (+ y_Asdh Epdh))

(setq entite2 (entlast)) ; garde en memoire l'objet ligne
(command "decaler" epdh entite2 (list x_Aidb y_asdh) "")


				;**************** dessin du plafond

   (setq y_hsp (+ y_Asdb hsp))
   (command "_line" (list x_Aidb y_hsp) (list (+ x_Aidb 740) y_hsp) "")

				; epaisseur plafond


   (setq y_epl (+ y_Asdb hsp))
   (setq y_epl (+ y_epl 10))

(setq entite3 (entlast)) ; garde en memoire l'objet ligne
(command "decaler" 10 entite3 (list x_Aidb (+ y_hsp 10)) "")



				;*************** dessin mur


(if (/= murg nil)
   (progn 
(command "_line" (list x_Aidb y_Asdb) (list x_Aidb y_Aidh) "")
(setq entite4 (entlast)) ; garde en memoire l'objet ligne
(command "_move" entite4 "" "d" "250,0")
       (setq entite5 (entlast)) ; garde en memoire l'objet ligne
       (command "decaler" ep_mur1 entite5 (list (+ x_Aidb 260) y_Asdb) "")
    )
) ; fin if

				;**************** dessin poutre

(if (/= Poutre nil)
   (progn 
;	(command "RECTANG" (list x_Aidb y_Aidh) (list (+ x_Aidb Lpoutre) (- y_Aidh Rpoutre)) "")
;(command "_pline" (list x_Aidb y_Aidh) (list (+ x_Aidb Lpoutre) y_Aidh) (list (+ x_Aidb Lpoutre) (- y_Aidh Rpoutre)) (list x_Aidb (- y_Aidh Rpoutre)) "c")
(setq p1 (list x_Aidb y_Aidh))
(setq p2 (list (+ x_Aidb Lpoutre) y_Aidh))
(setq p3 (list (+ x_Aidb Lpoutre) (- y_Aidh Rpoutre)))
(setq p4 (list x_Aidb (- y_Aidh Rpoutre)))
(command "_pline" p1 p2 p3 p4 "c")


(setq entite4 (entlast)) ; garde en memoire l'objet ligne
    )
) ; fin if




				;**************    grise le bouton dessin
   (Odcl_Control_SetEnabled alain_DclForm1_Dessin 0)

				

 
 )        ;fin defun coupe


				;load projet
 (Odcl_LoadProject "alain.odc" T)

				;show projet
 (Odcl_Form_Show alain_DclForm1)

)


 

 

[Edité le 26/10/2006 par ASTERIXII]

Lien vers le commentaire
Partager sur d’autres sites

Le problème c'est qu'il est difficile de juger sans le fichier ODC.

 

As-tu desactivé les accrobj ?

 

Sinon, je prends un exemple :

(Odcl_Control_GetValue alain_DclForm1_Poutre1)

 

Il vaut 100x mieux écrire :

 

(Odcl_Control_GetProperty alain_DclForm1_Poutre1  "Value")

(Odcl_Control_SetProperty alain_DclForm1_Poutre1  "Value" "valeur")

 

Ca marche bcp mieux.

 

et (Odcl_Form_Hide alain_DclForm1 1) ?

C'est nouveau ? avant, il fallait utiliser Odcl_Form_Close

 

Avec les cases à cocher, j'ai remarqué qu'il donnait 0 ou 1 ou alors T ou nil suivant qu'on était en lecture ou en écriture, à toi de faire des tests.

 

Je voudrais bien t'aider mais pas le temps ni tous les moyens faute du fichier.

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Lien vers le commentaire
Partager sur d’autres sites

Merci pour l'accrochage aux obj, cela resoud le probleme du dessin de la poutre

 

 

et (Odcl_Form_Hide alain_DclForm1 1) ?

C'est nouveau ? avant, il fallait utiliser Odcl_Form_Close

 

Pour ma part, Odcl_Form_Close ferme la boite de dialogue,

alors que Odcl_Form_Hide chache la boite le temps faire ma selection a l'ecran

 

par contre je ne comprend pas ton code

(Odcl_Control_GetProperty alain_DclForm1_Poutre1 "Value")

 

(Odcl_Control_SetProperty alain_DclForm1_Poutre1 "Value" "valeur")

Pour moi "Set " attribut une valeur alors que "Get" obtient la valeur ?

 

comment inserer un piece jointe dans le message ?

 

[Edité le 26/10/2006 par ASTERIXII]

Lien vers le commentaire
Partager sur d’autres sites

D'après les forums, et mes essais, ObjectDCL2007 n'a pas encore l'air très stable.

mais çà viendra.

concernant les accrochages aux objets, ils sont souvent génants dans les routines LISP

pour celà, AutoCAD prévoit une option intéressante

Options-> préférence utilisateur ->priorité lors de la saisie des coordonnées.

 

je te conseille de cocher Saisie clavier ; çà désactive les accrochages lorsque tu saisis au clavier une distance ou des coordonnées relatives. Les données fournies par les routines LISP sont considérées comme des saisies clavier ce qui désactive les accrochages.

Lien vers le commentaire
Partager sur d’autres sites

par contre je ne comprend pas ton code

Pour moi "Set " attribut une valeur alors que "Get" obtient la valeur ?

 

Oui, bien sûr, tu as entrée et sortie.

 

Je te conseille surtout cette forme d'écriture car, comme le dis l'auteur lui-même,

(Odcl_Control_GetValue ... pose des problèmes.

Surtout, suis mon conseil, pour toutes les formes remplacables, sinon, tu finira par obtenir des erreurs.

 

Pour le Hide, je suis surpris mais peu importe.

 

Il est temps que je ponde un petit cours d'ODCL depuis le temps que je le promets mais que j'ai des activités le WE. Dès qu'il fait un temps pourri samedi-dimanche, je le fais. Car, à le lire, je pense que tu peux améliorer ton code.

 

Sinon, je n'utilise pas encore la version 2007 et j'attends qu'elle soit plus stable.

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Lien vers le commentaire
Partager sur d’autres sites

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é