Aller au contenu

Coupes et Aplanir la géométrie


x_all

Messages recommandés

Ces deux fonction sont super utile mais...

 

Pourquoi diable les options pour la création des coupes et de la vue à plat ne conservent elle pas les calques des entités.. Tout ce retrouve sur le calque 0, c'est la loose.

 

 

C'est il est quand même loin le temps ou on ne coupais qu'un seul objet. Je suis en train de faire un réseau en 3d sur autocad, pas de pb les nouveaux outils de 3d sont largement suffisant pour la conception, mais quand on veux en sortir un plan 2d pour faire de la cotation, il faut reprendre la vue à plat pour repasser dans le bon calque et la bonne couleur tous les éléments, c'est fastidieux et incompréhensible que personne n'ai jamais exigé cette option.

 

De même, en 2016 avec le tout 3d, on rêverai de pouvoir sauvegarder les paramètres de création (un peu comme les styles visuels) avoir des hachures suivant le calque coupé, les type et épaisseur de trait ... ... ...

 

une idée de développement réellement utile il me semble...

votre avis?

 

(j'avais posté ça sur AUGIfr)

Lien vers le commentaire
Partager sur d’autres sites

  • 3 semaines après...

plop

 

ces histoires de calque ça me travaille quand même un peu... c'est dommage car cet outil pourrait être bien plus utile que ce qu'il est en l'état. J'ai donc essayer de faire un petit lisp pour remettre dans le calque d'origine les objets créés par la coupe ou la mise ne plan. Comme à mon habitude, j'ai fait une petite page d'explication sur la méthode à suivre pour que ça marche que vous trouverez ici

 

voici le code

 

;|  ccp
pour remetre dans les bon canques les traits des coupes ou mise a plat

recopier la coupe au dessus de la 3d (avec F8 actif pour figer les x) à une distance fixée. tapper 5 espace pour donner la valeur de ce pas

ccp pour lancer la fonction.
Pour l'instant seulle les lignes sont traitées Il faut forcer une couleur autre que ducalque au lignes crées dans la coupe ou le plan
la précision est pas top, mais ça aide pas mal quand même
Version 3
|;


;;;fonction de changement de pas de déplacement
(defun c:5 (/ pas test)
 (setq test 0)
 (setq dir 0)
 (princ "\nPas du décalage des niveaux enregistré: ")
 (princ (getvar "USERR1"))

 (or (setq pas (getreal "\nChanger cette valeur ou entrée "))
 	(progn
(setq pas (getvar "USERR1"))
(setq test 1)
(princ "\n pas de changement : ")
 	)
 )
 (if (= test 0)
(setvar "USERR1" pas)
 )
 (princ "\n nouveau pas de décalage : ")
 (princ (getvar "USERR1"))
 (princ)
)




;;;fonction qui lance la procédure


(defun c:ccp (/	lst-dxf	   tmp	  	P1	 P0		mod
	sel	   i	  	elem	 enlist		calquesource
	Pl1	   Pl2	  	Pmid	 entcible   entciblename
	entciblelst	  	calquecible		couleurcible
	om
   	)
 (setq om (getvar "osmode"))
 (setvar "osmode" 0)
 (setq tmp (getvar "USERR1"))
 (setq mod 0.05)
 (print tmp)
 (if (= 0.0 tmp)
(princ
 	"\nPour deffinir un décalage des déplacements tapper 5 puis entrée"
)
 )
;;;jeu d sélection
 (setq	sel (ssget)
i   0
 )
 (command "_zoom" "et")
 (repeat (sslength sel)
(setq elem (ssname sel i))
(setq entlst (entget elem))
;;;test si ligne	
(if	(= "LINE" (cdr (assoc 0 entlst)))

 	(progn
;;; recupération du calque et de la couleur NOTA dans les paramètre de la coupe in faut forcer une couleur autre que ducalque
(setq calquesource (assoc 8 entlst))
(setq couleursource (assoc 62 entlst))

;;;calcul du point milieu
(setq Pl1 (cdr (assoc 10 entlst)))
(setq Pl2 (cdr (assoc 11 entlst)))
(setq
  Pmid
   (list (+ (car Pl1) (/ (- (car pl2) (car pl1)) 2))
	 (+ (cadr Pl1) (/ (- (cadr pl2) (cadr pl1)) 2))
   )
)
;;; calcul des 2 pts pour la boite de sélection
(setq
  Pb1 (list (+ mod (car Pmid))
		(+ mod (* -1 (getvar "USERR1")) (cadr Pmid))
  	)
)
(setq Pb2 (list	(- (car Pmid) mod)
		(- (cadr Pmid) (getvar "USERR1") mod)
	  )
)

;;;selection de l'entité cible extraction du calque 
(setq entcible (ssget "_C" Pb1 Pb2))
(setq entciblename (ssname entcible 0))
(setq entciblelst (entget entciblename))
(setq calquecible (assoc 8 entciblelst))

;;;subsitution du calque
(setq entlst
   	(subst calquecible calquesource entlst)
)

;;;et de la couleur		
(if (not (assoc 62 entciblelst))
  (princ)
  (progn
	(setq couleurcible (assoc 62 entciblelst))
	(setq entlst
	   (subst couleurcible couleursource entlst)
	)
  )
)

;;; modification de la ligne
(entmod entlst)
 	)

)
;;;fin if
(setq i (+ 1 i))
 )
;;;fin repeat


 (princ)
 (setvar "osmode" Om)
 (command "_zoom" "p")

)

 

 

SI c'était possible, j'aimerai un peu d'aide pour finaliser le truc. Car en l'état c'est loin d'être parfait.

 

 

la méthode que j'ai trouvé pour traiter les lignes (c'est le seul truc que j'ai réussi a faire)

je place le bloc au dessus de la 3d exactement au dessus à une distance connue.

il faut rentrer cette distance (je me sert de USERR1 car j'ai d'autre lisp pour les pan et copie qui marche avec cette variable) une commande "5" est définie pour ça

On sélectionne les objets à traiter et on lance ccp. Le lisp parcours la liste de sélection, et pour chaque ligne calcule le point milieu, puis je sélectionne l'objet par une capture par 2 points situés sous ce milieu (à la distance pré renseignée). Cet objet capturé possède donc les propriété de calque et de couleur que je veux donner à la ligne

 

D'abord, j'aurai aimé découper le tout avec des fonctions (defun ...) mais j'ai du mal à comprendre les appels de fonctions et je ne retrouve plus le post ou (gile), il me semble, détaillait comment on passe les argumentd et comment on retourne le résultat du traitement. Bon ça c'est pas violant... mais ça facilitera le travail pour traiter les différents types d'entités

 

Plus délicat. j'ai des problèmes de précision car les entités se retrouvent pas forcement dans le bon calque. Peut être est ce du à la méthode que j'utilise pour sélectionner les entités "cible" qui sont celle dont je veux recopier le calque.

 

Encore plus difficile, comment faire pour trouver un point sur un arc, une ellipse ou une spline?

 

De plus en plus difficile, les couleurs.

J'ai découvert au fil de mes pérégrination que le code DXF 62 qui enregistre la couleur d'une entité est tout simplement absent si cette entité est en couleur Ducalque.

Donc comment insérer une couleur quand il n'y en à pas? j'ai bien essayer (append) mais ça n'a pas l'air de marcher. Il doit falloir l'insérer à la bonne place et c'est pas si facile.

 

 

bref si les pro du codage qui trainent sur le forum pouvais me filer un coup de main, je vous en serai éternellement reconnaissant

 

au passage si un modérateur pouvais déplacer ce post dans "débuter en lisp" svp

 

merci

Lien vers le commentaire
Partager sur d’autres sites

hello X_all

 

si j'étais toi j'arreterai de m'embéter à construire des 2D depuis une maquette 3D

pour avoir fais des plans depuis des modèles 3D je créais mes coupes directement dans l'espace papier

je créias une fenètre, puis avec 3DDELIM je créais la coupe tel que je la souhaitais

 

c'est plus simple et ça t'évites de recréer un bloc 2D à chaque fois...

en passant en 3D il faut, je pense, revoir ses méthodes de travail.

 

@+

Phil

Projeteur Revit Indépendant - traitement des eaux/CVC

Lien vers le commentaire
Partager sur d’autres sites

si c'était si simple...

je bosse avec un archi qui ne fait rien en 3d, j'ai donc mon 3d sur un fichier à part, et je doit rapatrier tout ça dans les plans clim qui sont en 2d sur les xref...

 

si j'importe la 3d sur les 3 niveaux avec le boxon qu'il y a je plante tout (les xref sont pas propre) de plus le jour ou je doit donner les dwg, je préfère ne pas donner la 3d, les artisants sont pas forcément formés pour gérer des plans en 3d avec des vues en espace papier ect... il veulent des plans 2d cotés.

 

Mais en dehors de toutes ces considération, j'airerai bien aller au bout car c'est mon 1er vrai programme.

Lien vers le commentaire
Partager sur d’autres sites

plop

 

appartement ça intéresse pas grand monde mais je continue à mon rythme... j'ai retrouvé le post sur les fonctions, et je commence à le mettre en pratique,

pour changer une couleur donnée en ducalque j'en ai un peu suer mais ça à l'air de marcher.

 

par contre je cherche toujours un moyen de trouver un point significatif sur un arc une spline ou une élipse...

si qq1 à une idée, je suis preneur...

 

le code à jour est ici

Lien vers le commentaire
Partager sur d’autres sites

  • 1 mois après...

slt

 

je ne connaissait ps ces commandes, mais je ne crois pas qu'elle fasse mon bonheur

d'une part ça se passe en espace papier, hors je voulais rapatrier de la 2d Dans des plans archi (par dessus des Xref). D'autre part je pas bien explorer, mais je pas vu de coulleur ou de calque dans ces "vues"... mais si ce sont effectivement des vues il n'y à pas moyen de récupérer les entités non.?...

 

bref c'est à explorer, mais je ne crois pas que ça fasse mon bonheur

Lien vers le commentaire
Partager sur d’autres sites

Hello

 

Concernant espace papier/objet tu peux facilement les permuter (exportlayout par exemple).

 

les couleurs effectivement sont perdues.

Ces commandes gênèrent juste un jeu de calque du style MD_xxxxx (xxxx=annotation ou visible ...)

 

Par contre comme c'est du dynamique La mise a jour est automatique (cotation aussi) si la 3d est modifiée. Pour moi c'est que du bonheur.

 

Je me contente souvent juste d'ajouter des traits d'axe, des repères, hachurer (ou gradient) pour marquer une zone...

 

Edit : une dernière précision : ce jeu de commande évolue énormément au fur et a mesure des versions. Je ne connais pas les améliorations concernant la v2016.

 

Vla

Lien vers le commentaire
Partager sur d’autres sites

  • 3 mois après...

...

Ces commandes gênèrent juste un jeu de calque du style MD_xxxxx (xxxx=annotation ou visible ...)

 

Par contre comme c'est du dynamique La mise a jour est automatique (cotation aussi) si la 3d est modifiée. Pour moi c'est que du bonheur.

...

 

Bonjour à tous,

 

@ Zou : Je nuancerai un peu sur la "redoutable" efficacité (ironie...) des cotes associatives quand tu fais une mise à jour de tes vues - surtout si ton modèle 3D de base est une X-REF ou un assemblage de X-REF. <_<

 

Par expérience, le système des styles/paramètres d'affichages des objets sur un AutoCAD Architecture est bien plus efficace car il permet (entre autres) de conserver l'associativité avec les calques. Mais ce système n'existe pas sur un AutoCAD "base" (Vanilia pour les English). Comme d'hab', il faut faire la balance entre le cout d'une licence Architecture plus chere que celle d'un Autocad "base" au regard des gains de productivité que cela engendre (pour ma part, le choix est fait). :)

 

Bref, on peut faire de belles maquettes en 3D avec AutoCAD "base" mais la mise en plan 2D et leurs mises à jour reste toujours problématique. C'est à mon avis une des raisons qui font que nombres de responsable CAO/BE (qui ne sont bien souvent pas des operateurs CAO) considèrent encore AutoCAD que d'un point de vue purement 2D (et ne jurent que par CATIA ou SW - même pour faire du BTP ou travailler sur des gros projets mêlant plusieurs corps d'état).

 

J'ajouterai que jusqu'à ce jour, je n'ai pas réussi à trouver un bon tutorial (en Français) sur les différentes façons de faire de la mise en plan sur un AutoCAD de base (entre les vues nommées, les aplanirgeo, les objets de coupe, les vue de base,... sans parler de méthodes hybrides). Une idée de developpement à creuser... ;)

 

Cdt,

""Nous avons un avenir et il sera fait de nos rêves si nous avons le courage de bousculer les idées reçues" - S. HONDA

Lien vers le commentaire
Partager sur d’autres sites

  • 1 mois après...

plop

 

ces histoires de calque ça me travaille quand même un peu... c'est dommage car cet outil pourrait être bien plus utile que ce qu'il est en l'état. J'ai donc essayer de faire un petit lisp pour remettre dans le calque d'origine les objets créés par la coupe ou la mise ne plan. Comme à mon habitude, j'ai fait une petite page d'explication sur la méthode à suivre pour que ça marche que vous trouverez ici

 

voici le code

 

;|  ccp
pour remetre dans les bon canques les traits des coupes ou mise a plat

recopier la coupe au dessus de la 3d (avec F8 actif pour figer les x) à une distance fixée. tapper 5 espace pour donner la valeur de ce pas

ccp pour lancer la fonction.
Pour l'instant seulle les lignes sont traitées Il faut forcer une couleur autre que ducalque au lignes crées dans la coupe ou le plan
la précision est pas top, mais ça aide pas mal quand même
Version 3
|;


;;;fonction de changement de pas de déplacement
(defun c:5 (/ pas test)
 (setq test 0)
 (setq dir 0)
 (princ "\nPas du décalage des niveaux enregistré: ")
 (princ (getvar "USERR1"))

 (or (setq pas (getreal "\nChanger cette valeur ou entrée "))
 	(progn
(setq pas (getvar "USERR1"))
(setq test 1)
(princ "\n pas de changement : ")
 	)
 )
 (if (= test 0)
(setvar "USERR1" pas)
 )
 (princ "\n nouveau pas de décalage : ")
 (princ (getvar "USERR1"))
 (princ)
)




;;;fonction qui lance la procédure


(defun c:ccp (/	lst-dxf	   tmp	  	P1	 P0		mod
	sel	   i	  	elem	 enlist		calquesource
	Pl1	   Pl2	  	Pmid	 entcible   entciblename
	entciblelst	  	calquecible		couleurcible
	om
   	)
 (setq om (getvar "osmode"))
 (setvar "osmode" 0)
 (setq tmp (getvar "USERR1"))
 (setq mod 0.05)
 (print tmp)
 (if (= 0.0 tmp)
(princ
 	"\nPour deffinir un décalage des déplacements tapper 5 puis entrée"
)
 )
;;;jeu d sélection
 (setq	sel (ssget)
i   0
 )
 (command "_zoom" "et")
 (repeat (sslength sel)
(setq elem (ssname sel i))
(setq entlst (entget elem))
;;;test si ligne	
(if	(= "LINE" (cdr (assoc 0 entlst)))

 	(progn
;;; recupération du calque et de la couleur NOTA dans les paramètre de la coupe in faut forcer une couleur autre que ducalque
(setq calquesource (assoc 8 entlst))
(setq couleursource (assoc 62 entlst))

;;;calcul du point milieu
(setq Pl1 (cdr (assoc 10 entlst)))
(setq Pl2 (cdr (assoc 11 entlst)))
(setq
  Pmid
   (list (+ (car Pl1) (/ (- (car pl2) (car pl1)) 2))
	 (+ (cadr Pl1) (/ (- (cadr pl2) (cadr pl1)) 2))
   )
)
;;; calcul des 2 pts pour la boite de sélection
(setq
  Pb1 (list (+ mod (car Pmid))
		(+ mod (* -1 (getvar "USERR1")) (cadr Pmid))
  	)
)
(setq Pb2 (list	(- (car Pmid) mod)
		(- (cadr Pmid) (getvar "USERR1") mod)
	  )
)

;;;selection de l'entité cible extraction du calque 
(setq entcible (ssget "_C" Pb1 Pb2))
(setq entciblename (ssname entcible 0))
(setq entciblelst (entget entciblename))
(setq calquecible (assoc 8 entciblelst))

;;;subsitution du calque
(setq entlst
   	(subst calquecible calquesource entlst)
)

;;;et de la couleur		
(if (not (assoc 62 entciblelst))
  (princ)
  (progn
	(setq couleurcible (assoc 62 entciblelst))
	(setq entlst
	   (subst couleurcible couleursource entlst)
	)
  )
)

;;; modification de la ligne
(entmod entlst)
 	)

)
;;;fin if
(setq i (+ 1 i))
 )
;;;fin repeat


 (princ)
 (setvar "osmode" Om)
 (command "_zoom" "p")

)

 

 

SI c'était possible, j'aimerai un peu d'aide pour finaliser le truc. Car en l'état c'est loin d'être parfait.

 

 

la méthode que j'ai trouvé pour traiter les lignes (c'est le seul truc que j'ai réussi a faire)

je place le bloc au dessus de la 3d exactement au dessus à une distance connue.

il faut rentrer cette distance (je me sert de USERR1 car j'ai d'autre lisp pour les pan et copie qui marche avec cette variable) une commande "5" est définie pour ça

On sélectionne les objets à traiter et on lance ccp. Le lisp parcours la liste de sélection, et pour chaque ligne calcule le point milieu, puis je sélectionne l'objet par une capture par 2 points situés sous ce milieu (à la distance pré renseignée). Cet objet capturé possède donc les propriété de calque et de couleur que je veux donner à la ligne

 

D'abord, j'aurai aimé découper le tout avec des fonctions (defun ...) mais j'ai du mal à comprendre les appels de fonctions et je ne retrouve plus le post ou (gile), il me semble, détaillait comment on passe les argumentd et comment on retourne le résultat du traitement. Bon ça c'est pas violant... mais ça facilitera le travail pour traiter les différents types d'entités

 

Plus délicat. j'ai des problèmes de précision car les entités se retrouvent pas forcement dans le bon calque. Peut être est ce du à la méthode que j'utilise pour sélectionner les entités "cible" qui sont celle dont je veux recopier le calque.

 

Encore plus difficile, comment faire pour trouver un point sur un arc, une ellipse ou une spline?

 

De plus en plus difficile, les couleurs.

J'ai découvert au fil de mes pérégrination que le code DXF 62 qui enregistre la couleur d'une entité est tout simplement absent si cette entité est en couleur Ducalque.

Donc comment insérer une couleur quand il n'y en à pas? j'ai bien essayer (append) mais ça n'a pas l'air de marcher. Il doit falloir l'insérer à la bonne place et c'est pas si facile.

 

 

bref si les pro du codage qui trainent sur le forum pouvais me filer un coup de main, je vous en serai éternellement reconnaissant

 

au passage si un modérateur pouvais déplacer ce post dans "débuter en lisp" svp

 

merci

 

 

Bonjour et merci pour la lips mais lorque que je sélectionne les objets et que je valide j'ai l'erreur suivante :

 

erreur ; type d'argument incorrect: lselsetp nil

 

Si tu peux m'aider, merci.

 

post-63409-0-17718600-1452327168_thumb.jpg

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é