Aller au contenu

Problème gisement + Abscisse sur une droite


mateus

Messages recommandés

  • Réponses 103
  • Créé
  • Dernière réponse

Meilleurs contributeurs dans ce sujet

Meilleurs contributeurs dans ce sujet

Images postées

Merci Olivier mais j'ai déjà essayé même manuellement je n'arrive pas alors peut être que je suis ocmpletement à côté de la plaque que je ne sais pas me servir de la commande mais en tout cas je n'y arrive pas . Mon programme actuel est celui ci. Je ne sais pas à quel moment le coller le code de Didier.

ECL2.lsp

Lien vers le commentaire
Partager sur d’autres sites

Escusez moi il y a eu un beug je recommence mon message :

 

j'essaie d'utiliser la commande _break (coupure) avant de faire mon raccord

 

(command "_break" polyReseau "1er" PT2 PT3)

 

Les points PT2 et PT3 correspondent aux liaisons avec le réseau (voir schéma ci-joint). Le problème c'est que la commande ne reconnait pas les deux points, comment puis-je faire pour dire à la commande c'est à l'endroit de ces deux points que je désire couper la polyline.

 

Merci à vous.

post-41726-0-21854800-1378296789_thumb.jpg

Lien vers le commentaire
Partager sur d’autres sites

Voilà j'ai trouvé ce code sur un forum anglais :

 

 

 

;BREAKINT.LSP
;breaks line at an intersection
;
; Reviewed & revised for A2K by Guy Dow
; 03/05/01
;
(defun c:bi ( / ss point snap echo olderr)
 (setq snap (getvar "osmode"))
 (setq echo (getvar "cmdecho"))
 (setq olderr *error*)
 (setq *error* break_error)
 (setvar "cmdecho" 0)
 (while (not ss)
   (setq ss (entsel "\nSelect line to break: "))
 );while
 (setvar "osmode" 32)
 (while (not point)
   (setq point
   (osnap (getpoint "\nSelect intersection to break at: ") "int"))
 );while
 (setvar "osmode" snap)
 (command "break" ss "f" point "@")
 (setvar "cmdecho" echo)
 (setq *error* olderr)
 (princ)
)

(defun break_error (msg)
 (princ (strcat "\nError: " msg))
 (setvar "osmode" 0)
 (setvar "cmdecho" 1)
 (princ)
)



 

 

 

 

Et je comprends que la commande coupure demande un entsel (dans mon cas pour ma polyline réseau) et des "getpoint" pour obtenir les points de coupures.

Seulement, dans mon programme la poly réseau est déjà mémorisé en variable ainsi que les points ou je désire coupé (PT2 PT3) comment faire pour faire fonctionner cette commande sans utiliser getpoint et entsel ?

 

Merci

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

la seule fonction dont tu a besoin est celle-ci :

 

(command "break" ss point point2 "@")

 

ss est le entname de la polyligne et point et point2 les points de coupure.

 

 

@+

C'est en forgeant que l'on devient forgerons.

Et c'est en sciant que Léonard DeVinci!

Lien vers le commentaire
Partager sur d’autres sites

C'est bon la commande fonctionne mais alors maintenant c'est une nouvelle erreur et pour vous expliquez je ne sais comment ...

 

 

; erreur: groupe DXF incorrect: (10)

 

Si quelqu'un aurait un peu de temps pour regarder le fichier joint "ECL2" j'ai mis des commentaires partout pour s'y retrouver mais je ne sais pas pourquoi il y a encore cette erreur...

 

le premier raccordement est bien passé mais pas les autres ... :(

ECL2.lsp

Lien vers le commentaire
Partager sur d’autres sites

Désolé la commande est :

 

(command "_break" ss point point2 "@")

 

donc dans ton cas :

 

(command "_break" ent pt3 pt4 "@")

 

mais avec tout tes point je ne vois pas l'intérêt de faire des coupures quand tu peu créer des lignes ou polylignes complètes!

 

Surtout que si je ne me trompe pas ta polyligne de base est systématiquement droite?

C'est en forgeant que l'on devient forgerons.

Et c'est en sciant que Léonard DeVinci!

Lien vers le commentaire
Partager sur d’autres sites

normal tu coupe ta polyligne qui te sert à faire tes fonctions.

 

Donc tu ne peu plus faire :

 

(setq PT3 (vlax-curve-getPointAtDist polyReseauVla (+ D5 (* distReseauCande 0.5))))

 

Il renvoie nil au second passage (polyReseauVla est uniquement la première polyligne).

 

test donc cette sélection en ligne de commande tu comprendra :

 

(sssetfirst nil (ssadd (vlax-vla-object->ename polyReseauVla) (setq 
test (ssadd))))

 

Donc tu va devoir travailler à reculons sur ta polyligne i tu souhaite voir fonctionner tout ça!

C'est en forgeant que l'on devient forgerons.

Et c'est en sciant que Léonard DeVinci!

Lien vers le commentaire
Partager sur d’autres sites

Pour essayer de remédier à ça j'ai copié dans la boucle 2 fois la polyline réseau pour raccorder mes raccordements aux polylignes crées directement mais rien n'y a fait, voici le bout de code (et le fichier lsp en fichier joint) :

 

   (entmake (list (cons 0 "LWPOLYLINE")
	       (cons 100 "AcDbEntity")
	       (cons 100 "AcDbPolyline")
	       (cons 8 "ICI-RES-ECP")
	       (cons 90 2)
	       (cons 10 PT2)
	       (cons 10 PT)
	      
	       
	       
	 )
)
   (setq entPtPt2 (entlast))


   (entmake (list (cons 0 "LWPOLYLINE")
	       (cons 100 "AcDbEntity")
	       (cons 100 "AcDbPolyline")
	       (cons 8 "ICI-RES-ECP")
	       (cons 90 2)
	       (cons 10 PT3)
	       (cons 10 PT)
	       		       
	       
	 )
)
  (setq entPtPt3 (entlast))

   (command "_copybase" ptStart polyReseau "")
   (command "_pasteclip" ptStart "")
   (setq polyTemp1 (entlast))

   (command "_copybase" ptStart polyReseau "")
   (command "_pasteclip" ptStart "")
   (setq polyTemp2 (entlast))


   (setvar "filletrad" 0.5)
   (command "raccord" polyTemp1 entPtPt2)
   (command "raccord" polyTemp2 entPtPt3)
   
       

 

Les copies de polylignes sont bien crées mais les raccords ne sont pas fait :o

 

Amicalement

testECL.LSP

Lien vers le commentaire
Partager sur d’autres sites

Bonjour à tous

 

J'ai fait un lisp test qui est celui joint où je créer les deux antennes et trois polylines. Deux polylines sont les trois sont des copier/coller de la premier polyline.

 

Ce qui me permeterai (logiquement) de pouvoir faire les raccordements rayon de chacune de mes antennes avec les poly crées. J'ai essayé à multiples reprises de bien comprendre le fonctionnement et de comprendre pk ça ne fonctionnait pas, il en est vain

 

Si quelqu'un pourrait m'aider d'une manière ou d'une autre afin que je puisse solutionner ce problème je vous en remercie.

 

le schéma joint en #post 91 reflète la figure créée dans le lisp avec tous les points.

 

Merci par avance

 

 

 

 

 

 

 

 

#post91

raccordementRayon.lsp

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

Je te conseillerais d'étudier les lisp ADDVTX et ceux qui utilisent la fonction vla-addvertex (un certain nombre est trouvable sur internet).

 

Tu pourrais avec cela ne pas avoir à couper ta polyligne mais uniquement lui ajouter des sommets et ainsi travailler sur le même objet tout du long.

 

A toi de voir mais ça me semble être un choix plus logique et qui devrais apporter une vitesse d’exécution supérieure.

 

@+

C'est en forgeant que l'on devient forgerons.

Et c'est en sciant que Léonard DeVinci!

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é