2 réponses
Bonjour,
Quand tu execute le programme pour la première fois, l'angle alfa n'est pas initialisé.
(setq p3 (polar p2 alfa (distance p0 p1)))
;)
Quand tu execute le programme pour la première fois, l'angle alfa n'est pas initialisé.
(setq p3 (polar p2 alfa (distance p0 p1)))
;)
mdaroze
Messages postés
3
Date d'inscription
vendredi 6 juillet 2012
Statut
Membre
Dernière intervention
6 juillet 2012
6 juil. 2012 à 11:54
6 juil. 2012 à 11:54
bonjour, je ne connais pas la programmation autocad, ni d'autre d'autre, une commande que j'ai récupéré ne fonction pas, elle se termine par le message suivant "Commande: ; erreur: type d'argument incorrect: number: nil" plus haut Yoda indique qu'il faut initialiser l'angle alpha? mais comment fait on? sinon voici le fichier texte de la commande.
;Détermine les éléments pour faire les dist/sol pour un point souhaité.
(defun c:l05 ()
(vl-load-com)
(setq ppc (mgetpoint ppc "\nOrigine PROFIL ... : "))
(setq ppcx (car ppc))
(setq ppcy (car (cdr ppc)))
(setq vpc (mgetreal vpc "Valeur PC (m)"))
(setq osmde (getvar "osmode"))
(setq cal (getvar "clayer"))
(command "-calque" "n" "_Ptbas" "e" "_Ptbas" "co" "2" "" "t" "a" "" "")
(setq pt (getpoint "\nPoint au sol ... : "))
(setq cab (car (entsel "\Sélectionner le câble: ")))
(while pt
(command "osmode" 0)
(setq ptocable (vlax-curve-getstartpoint cab))
(setq xo (nth 0 pt))
(setq yo (nth 1 pt))
(setq altiobs (+ vpc (/ (- yo ppcy) 5)))
(setq positionobs (- xo (car ptocable)))
(command "polylign" (list xo yo) (list xo (+ 1000 yo)) "")
(setq po (entlast))
(setq po1 (vlax-ename->vla-object po))
(setq cab (vlax-ename->vla-object cab))
(setq int (3d-coord->pt-lst
(vlax-invoke po1 'IntersectWith cab acExtendNone)
)
)
(command "effacer" po "")
(setq pt1x (caar int))
(setq pt1y (car (cdr (car int))))
(setq txtx (+ pt1x 5))
(setq txty (+ (/ (- pt1y (cadr ptobs)) 2) (cadr ptobs)))
(command "polylign" pt (list pt1x pt1y) "")
(setq distca (/ (distance pt (car int)) 5))
(command "_mtext" (list txtx txty) "h" 3 "r" 0 "l" 0
(strcat (strcat "Dist supp gauche: " (rtos positionobs 2 2) "m") "\\P"
(strcat "Alti obs: " (rtos altiobs 2 2) "m") "\\P"
(strcat "Dist sol/cable: " (rtos distca 2 2) "m"))
""
)
(command "osmode" osmde)
(setq pt (getpoint "\nPoint au sol ...<Entrer> : "))
(if (/= pt nil)
(setq cab (car (entsel "\Sélectionner le câble: ")))
)
)
(command "osmode" osmde)
(command "clayer" cal)
)
merci d'avance
;Détermine les éléments pour faire les dist/sol pour un point souhaité.
(defun c:l05 ()
(vl-load-com)
(setq ppc (mgetpoint ppc "\nOrigine PROFIL ... : "))
(setq ppcx (car ppc))
(setq ppcy (car (cdr ppc)))
(setq vpc (mgetreal vpc "Valeur PC (m)"))
(setq osmde (getvar "osmode"))
(setq cal (getvar "clayer"))
(command "-calque" "n" "_Ptbas" "e" "_Ptbas" "co" "2" "" "t" "a" "" "")
(setq pt (getpoint "\nPoint au sol ... : "))
(setq cab (car (entsel "\Sélectionner le câble: ")))
(while pt
(command "osmode" 0)
(setq ptocable (vlax-curve-getstartpoint cab))
(setq xo (nth 0 pt))
(setq yo (nth 1 pt))
(setq altiobs (+ vpc (/ (- yo ppcy) 5)))
(setq positionobs (- xo (car ptocable)))
(command "polylign" (list xo yo) (list xo (+ 1000 yo)) "")
(setq po (entlast))
(setq po1 (vlax-ename->vla-object po))
(setq cab (vlax-ename->vla-object cab))
(setq int (3d-coord->pt-lst
(vlax-invoke po1 'IntersectWith cab acExtendNone)
)
)
(command "effacer" po "")
(setq pt1x (caar int))
(setq pt1y (car (cdr (car int))))
(setq txtx (+ pt1x 5))
(setq txty (+ (/ (- pt1y (cadr ptobs)) 2) (cadr ptobs)))
(command "polylign" pt (list pt1x pt1y) "")
(setq distca (/ (distance pt (car int)) 5))
(command "_mtext" (list txtx txty) "h" 3 "r" 0 "l" 0
(strcat (strcat "Dist supp gauche: " (rtos positionobs 2 2) "m") "\\P"
(strcat "Alti obs: " (rtos altiobs 2 2) "m") "\\P"
(strcat "Dist sol/cable: " (rtos distca 2 2) "m"))
""
)
(command "osmode" osmde)
(setq pt (getpoint "\nPoint au sol ...<Entrer> : "))
(if (/= pt nil)
(setq cab (car (entsel "\Sélectionner le câble: ")))
)
)
(command "osmode" osmde)
(command "clayer" cal)
)
merci d'avance
Bonjour,
Je n'ai pas pu essayer ton lisp, ne sachant pas quelles sont les données de départ, ni ce qu'il est sensé faire.
Mais cette ligne doit générer une erreur:
(setq txty (+ (/ (- pt1y (cadr ptobs)) 2) (cadr ptobs)))
en effet l'élément ptobs n'est pas initialisé plus haut dans le programme, donc sa valeur est nil. On ne peut pas faire d'opération arithmétique avec des valeurs non initialisées.
Essayes de cette façon:
(setq txty (+ (/ (- pt1y (cadr positionobs)) 2) (cadr positionobs)))
;)
Je n'ai pas pu essayer ton lisp, ne sachant pas quelles sont les données de départ, ni ce qu'il est sensé faire.
Mais cette ligne doit générer une erreur:
(setq txty (+ (/ (- pt1y (cadr ptobs)) 2) (cadr ptobs)))
en effet l'élément ptobs n'est pas initialisé plus haut dans le programme, donc sa valeur est nil. On ne peut pas faire d'opération arithmétique avec des valeurs non initialisées.
Essayes de cette façon:
(setq txty (+ (/ (- pt1y (cadr positionobs)) 2) (cadr positionobs)))
;)
mdaroze
Messages postés
3
Date d'inscription
vendredi 6 juillet 2012
Statut
Membre
Dernière intervention
6 juillet 2012
6 juil. 2012 à 14:38
6 juil. 2012 à 14:38
merci de cette réactivité Yoda vraiment merci,
j'ai essayé mais pas de résultat, l'erreur n'arrive qu'à la fin, c'est la première fois que je l'utilise sur mon PC, j'ai récupérai un fichier .lsp qui contient une vingtaine de petite manip et c'est la seule qui ne fonctionne pas... peut être que le problème ce trouve au début de l'ouverture autocad?
merci pour tout
j'ai essayé mais pas de résultat, l'erreur n'arrive qu'à la fin, c'est la première fois que je l'utilise sur mon PC, j'ai récupérai un fichier .lsp qui contient une vingtaine de petite manip et c'est la seule qui ne fonctionne pas... peut être que le problème ce trouve au début de l'ouverture autocad?
merci pour tout
mdaroze
Messages postés
3
Date d'inscription
vendredi 6 juillet 2012
Statut
Membre
Dernière intervention
6 juillet 2012
6 juil. 2012 à 16:14
6 juil. 2012 à 16:14
il faudrait que je t'envoie un fichier sur lequel je travaille pour que tu vois cela, et que je t'explique ce que je recherche. tu aurais une adresse mail?
Je ne répond que sur ce forum.
Mais tu peux m'expliquer en quelque mots. D'après ce que j'ai compris, tu essayes de tracer un profil en long?
Dis moi de quoi tu parts et ce que tu veux faire. Si tu veux joindre un fichier, passe par le site cjoint.com, depose ton fichier et colle le lien dans le prochain post.
Je dois interrompre pour le moment. A+.
Mais tu peux m'expliquer en quelque mots. D'après ce que j'ai compris, tu essayes de tracer un profil en long?
Dis moi de quoi tu parts et ce que tu veux faire. Si tu veux joindre un fichier, passe par le site cjoint.com, depose ton fichier et colle le lien dans le prochain post.
Je dois interrompre pour le moment. A+.
5 mars 2012 à 11:38
5 mars 2012 à 13:19
la fonction polar demande un point, un angle et une distance.
pour alfa c'est peut-etre (setq alfa (angle p0 p1)), a voir dans ton cas précis.
(setq alfa (angle p0 p1))
(setq p3 (polar p2 alfa (distance p0 p1)))
;)