Aller au contenu

Messages recommandés

Posté(e)

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: LISTE

1 trouvé(s)

 

COVACARROYAGE Calque: "_Habillage MEP"

Espace: Espace objet

Maintien = f3abf

 

Point Bas Gauche : 818927.9722,6300688.8444, 0.0000

Gisement : 55.5396 gr

Longueur : 992.500 mm

Hauteur : 602.500 mm

Cartouche1 : Aucun

Cartouche2 : Aucun

Commande:

 

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
Posté(e)

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
Posté(e)

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édia

Ils ont créé un objet mais ils mettent tous les renseignements dans le même code DXF

Pas simple de les extraire !!!

D'habitude (avec AutoCAD) chaque code dxf définit une qualité (calque, orientation, point d'insertion...)

Je regarde...

 

 

Posté(e)

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
Posté(e)

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

Posté(e)

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
Posté(e)

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
Posté(e)

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

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é