La Lozère Posté(e) le 29 mai 2017 Posté(e) le 29 mai 2017 Hello,Je poste le message ici car je pense que mon but passe par du lisp (ou autre) bien que cela concerne un objet Covadis, alors il est un peu transverse avec d'autre groupe (Covadis, Autocad....)Voilà, Sous Covadis on peut créer un carroyage et pour cela j'utilise l'objet Carroyage.Mon fichier comporte de nombreuses Xref qui vont bien au-delà du carroyage.Du coup, pour avoir un meilleur fonctionnement de ma machine, j'ai pris l'habitude de délimiter les Xref au contour du carroyage. En tant normal, je n'ai pas de souci pour le faire. Sauf que là, j'ai 101 fichier à traiter.Et je voudrais automatiser ça pour que ce soit scriptable. Je pense qu'il y a un moyen de récupérer le contour de cet objet carroyage car quand je dresse la "liste" de cet objet, voici ce que j'obtiens:Commande: LISTE1 trouvé(s) COVACARROYAGE Calque: "_Habillage MEP" Espace: Espace objet Maintien = f3abf Point Bas Gauche : 818927.9722,6300688.8444, 0.0000Gisement : 55.5396 grLongueur : 992.500 mmHauteur : 602.500 mmCartouche1 : AucunCartouche2 : AucunCommande: Je précise que je n'ai qu'un seul corroyage par fichier.Donc si j'arrivais à recréer un contour dans un calque particulier, le tour est joué car après en mélangeant du script et du lisp, je doit pouvoir m'en sortir pour délimiter ces xref. Si quelqu'un à une idée, je suis preneur.... Merci d'avance. www.cad-is.fr Autocad Map 2021 - Covadis/Autopiste V18.0c Pisser sous la douche ne suffira pas
La Lozère Posté(e) le 29 mai 2017 Auteur Posté(e) le 29 mai 2017 Bon, j'avance à très petit pas...Déjà, j'ai trouver comment sélectionner uniquement mon carroyage:(setq caro (ssget "_x" '((0 . "covacarroyage")))) Ensuite, je cherche à interroger cet objet avec "entget", mais cela me retourne ça:; erreur: type d'argument incorrect: lentityp <Selection set: 962> Alors que je devrais avoir ça:((-1 . <Nom d'entité: 7fffe98d490>) (0 . "COVACARROYAGE") (330 . <Nom d'entité: 7fffe9a79f0>) (5 . "114F01") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "_Habillage MEP") (100 . "CvDbCarroyage") (40 . 2.0) (300 . "Carroy.cry") (300 . "Vue en plan") (40 . -1.25) (10 818928.0 6.30069e+006 0.0) (40 . 0.698382) (40 . 992.5) (40 . 602.5) (40 . 10.0) (40 . 10.0) (40 . 10.0) (40 . 10.0) (40 . 0.5) (290 . 1) (290 . 0) (290 . 0) (40 . 210.0) (40 . 297.0) (290 . 1) (290 . 1) (290 . 1) (290 . 1) (40 . 0.0) (40 . 2.0) (290 . 1) (40 . 100.0) (40 . 100.0) (40 . 5.0) (40 . 5.0) (290 . 1) (290 . 1) (290 . 1) (290 . 1) (340 . <Nom d'entité: 7fffe9a7910>) (70 . 7) (40 . 2.0) (40 . 3.0) (290 . 0) (290 . 1) (290 . 0) (300 . "X= ") (300 . "Y= ") (70 . 0) (40 . 297.0) (40 . 210.0) (290 . 1) (300 . "C:\\Program Files\\Geomedia SA\\Covadis\\Support\\Cartouche.dwg") (330 . <Nom d'entité: 0>) (70 . 0) (40 . 297.0) (40 . 210.0) (290 . 0) (300 . "C:\\Program Files\\Geomedia SA\\Covadis\\Support\\Cartouche.dwg") (330 . <Nom d'entité: 0>) (70 . 0) (70 . 7)) Donc là dedans, j'ai bien les infos que j'ai besoin:- Les coordonnées du point d'insertion: (10 818928.0 6.30069e+006 0.0) Mais sous forme entière :angry: Encore une histoire de LUPREC....- Le gisement: (40 . 0.698382): Mais en radians :angry: - La longueur: (40 . 794)- La hauteur: (40 . 482) Il me reste à extraire tout ça!!!!! www.cad-is.fr Autocad Map 2021 - Covadis/Autopiste V18.0c Pisser sous la douche ne suffira pas
didier Posté(e) le 29 mai 2017 Posté(e) le 29 mai 2017 Coucou Je ne m'étais jamais posé la question mais en regardant de plus près c'est pas cool de la part de GéomédiaIls ont créé un objet mais ils mettent tous les renseignements dans le même code DXFPas simple de les extraire !!!D'habitude (avec AutoCAD) chaque code dxf définit une qualité (calque, orientation, point d'insertion...)Je regarde... Éternel débutant... Mon site perso : Programmer dans AutoCAD
La Lozère Posté(e) le 29 mai 2017 Auteur Posté(e) le 29 mai 2017 Bon pour extraire, j'ai trouvé comment faire avec "nth" Le reste n'est qu'histoire de construction géométrique, de listes, etc... Non pour l'instant mon gros soucis, c'est le passage de:(setq caro (ssget "_x" '((0 . "covacarroyage"))))Pour ensuite lancer un "entget" Si je fais ça, ça bug:(setq liste (entget caro)) www.cad-is.fr Autocad Map 2021 - Covadis/Autopiste V18.0c Pisser sous la douche ne suffira pas
Olivier Eckmann Posté(e) le 29 mai 2017 Posté(e) le 29 mai 2017 Bonjour, caro est un jeu de sélection pouvant contenir de 0 à n objets. Il faut tester qu'il y a au moins 1 objet dans le jeu de sélection puis on peut y accéder par (ssname JEU 0) (if (and caro (>= 1 (sslength caro))) (setq liste (entget (ssname caro 0))) ) Olivier
La Lozère Posté(e) le 29 mai 2017 Auteur Posté(e) le 29 mai 2017 Merci Olivier,Voici donc ce à quoi j'arrive. C'est perfectible, mais pour l'instant ça me suffit, et surtout ça marche.;;;;;; Délimiter des Xref suivant le contour d'un carroyage Covadis (defun c:del_caro (/ SEL CARO LISTE COOR0 COOR1 COOR2 COOR3 X0 X1 X2 X3 Y0 Y1 Y2 Y3 ANGLE LONG HAUT) (alert "Un seul carroyage par fichier IMPERATIF") ;;;; Sélection des xref (setq SEL (ssget)) ;;; Sélectionner le carroyage (setq CARO (ssget "_x" '((0 . "covacarroyage")))) ;;;; Intéroger le carroyage (if (and caro (>= 1 (sslength caro))) (setq liste (entget (ssname caro 0))) ) ;;;; Extraction coordonnées de départ (setq COOR0 (cdr (nth 13 LISTE))) ;;;; Extraction longueur et hauteur (setq LONG (cdr (nth 15 LISTE))) (setq HAUT (cdr (nth 16 LISTE))) (setq X0 (car (cdr (nth 13 LISTE)))) (setq Y0 (cadr (cdr (nth 13 LISTE)))) (setq ANGLE (cdr (nth 14 LISTE))) (setq X1 (+ X0 (* (cos ANGLE) LONG))) (setq Y1 (+ Y0 (* (sin ANGLE) LONG))) (setq COOR1 (list X1 Y1 0)) ;;;;CONSTRUCTION DU POINT 2 (setq X2 (- X1 (* (sin ANGLE) HAUT))) (setq Y2 (+ Y1 (* (cos ANGLE) HAUT))) (setq COOR2 (list X2 Y2 0)) ;;;;CONSTRUCTION DU POINT 3 (setq X3 (- X0 (* (sin ANGLE) HAUT))) (setq Y3 (+ Y0 (* (cos ANGLE) HAUT))) (setq COOR3 (list X3 Y3 0)) (command "xdelim" SEL "" "N" "P" COOR0 COOR1 COOR2 COOR3 "") ) Merci à vous www.cad-is.fr Autocad Map 2021 - Covadis/Autopiste V18.0c Pisser sous la douche ne suffira pas
La Lozère Posté(e) le 29 mai 2017 Auteur Posté(e) le 29 mai 2017 Je suis comme un dingue....Mon lisp marche très bien quand je l'utilise tout seul.Mais dès que je le rend normalement scriptable, il plante aumoment de la saisie des coordonnées de délimitation :angry: :angry: :angry: Point incorrect, la longueur du segment de polygone est nulle. Le code:(setq SEL (ssget "_A" '((0 . "INSERT")))) (setq CARO (ssget "_x" '((0 . "covacarroyage")))) (if (and caro (>= 1 (sslength caro))) (setq liste (entget (ssname caro 0))) ) (setq COOR0 (cdr (nth 13 LISTE))) (setq LONG (cdr (nth 15 LISTE))) (setq HAUT (cdr (nth 16 LISTE))) (setq X0 (car (cdr (nth 13 LISTE)))) (setq Y0 (cadr (cdr (nth 13 LISTE)))) (setq ANGLE (cdr (nth 14 LISTE))) (setq X1 (+ X0 (* (cos ANGLE) LONG))) (setq Y1 (+ Y0 (* (sin ANGLE) LONG))) (setq COOR1 (list X1 Y1 0)) (setq X2 (- X1 (* (sin ANGLE) HAUT))) (setq Y2 (+ Y1 (* (cos ANGLE) HAUT))) (setq COOR2 (list X2 Y2 0)) (setq X3 (- X0 (* (sin ANGLE) HAUT))) (setq Y3 (+ Y0 (* (cos ANGLE) HAUT))) (setq COOR3 (list X3 Y3 0)) (command "xdelim" SEL "" "N" "P" COOR0 COOR1 COOR2 COOR3 "") www.cad-is.fr Autocad Map 2021 - Covadis/Autopiste V18.0c Pisser sous la douche ne suffira pas
Olivier Eckmann Posté(e) le 29 mai 2017 Posté(e) le 29 mai 2017 Bonjour, peut-être, désactives tes accrochages : variable OSMODE à 0 Olivier
La Lozère Posté(e) le 29 mai 2017 Auteur Posté(e) le 29 mai 2017 Je ne sais pas d'où ça peu venir....Mais j'ai changer le mode de sélection: (setq SEL (ssget "_A" '((0 . "INSERT"))))Par un grosse bidouille:(setq sel (ssget)) 2189059,6588135 752202,6258236 Et là, ça marche.... Mais je ne vois pas le rapport. www.cad-is.fr Autocad Map 2021 - Covadis/Autopiste V18.0c Pisser sous la douche ne suffira pas
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant