lecrabe Posté(e) le 11 mai 2006 Posté(e) le 11 mai 2006 Hello Une petite idée de "gros" développement: A partir d'une sélection de N Polylignes et/ou LWPolylignes (Closes ou Non, avec/sans Arcs, Spline ou Non, Lisse ou Non, etc) Générer / dessiner par dessus et sur le même calque que le calque de ces polylignes, une "belle" multi-ligne dont on demande le nom de style (Prédéfini préalablement) ... Voilà qui me paraît fort intéressant et pas simple du tout ... Le Decapode "Générateur de Prise de têtes" [Edité le 11/5/2006 par lecrabe] Autodesk Expert Elite Team
Tramber Posté(e) le 11 mai 2006 Posté(e) le 11 mai 2006 Aucun problème, on lit les propriétés de multiligne et on applique la méthode OFFSET en Vlax qui renvoie un ARRAY dans lequel on peut compter le nombre d'objets générés (qui n'a jamais obtenu 0, 2 voire 3 entités en décalant une polyligne ?) pour vérifier la propreté du résultat. Ton souhait étant irréalisable pour obtenir des multilignes (spline, courbes, etc...) J'ai développé plein de routines pour mon propre usage dans ce domaine du décalage. Je peux m'y mettre ce soir, après le boulot.Mes routines créent des blocs, ca ne dérange pas ? Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
lecrabe Posté(e) le 11 mai 2006 Auteur Posté(e) le 11 mai 2006 Bonsoir Tramber C pour essayer d'obtenir qq chose "approchant" les superbes objets 2D (multi-lignes, multi-couleurs, multi-épaisseurs, multi-hachures, etc) des objets MURs de Autodesk Architectural Desktop en 2D ... :casstet: Et ce à partir d'une belle polyligne (ou plusieurs) qui serait à l'origine, soit l'axe central, soit le bord intérieur / extérieur ... Je suis sur que tu vois parfaitement ce que je désire !!! Mais c peut être "TROP" demander ! :o Le Decapode "batissant sans Autodesk Architectural Desktop" [Edité le 11/5/2006 par lecrabe] Autodesk Expert Elite Team
Tramber Posté(e) le 11 mai 2006 Posté(e) le 11 mai 2006 Bouge pas, tu vas voir.Le temps que je rentre, que je mange, que je fume, que je regarde le match de foot (mince c'était hier), que je fasse la vaisselle et je décortique mes programmes pour en tirer la substantifique moelle (tu sais comme tant tu aspires de la pince d'un crabe ou d'une langouste,...hummm). J'avais même en projet un utilitaire indépendant : http://img102.imageshack.us/img102/5104/abmurs4et.jpg [Edité le 11/5/2006 par Tramber] Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
bonuscad Posté(e) le 11 mai 2006 Posté(e) le 11 mai 2006 J'avais déjà proposé CECI Bien sur, cela ne fonctionne pas avec des arrondis. Par contre avec des polylignes splinées, il y a peut être moyen en utilisant MY_CONVERT auparavant. A voir :exclam: Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
Tramber Posté(e) le 11 mai 2006 Posté(e) le 11 mai 2006 Nous allons utiliser ces fonctions ou bouts de fonction : Fonction de décalage(defun decal+ (enti deca / ); (setq enti obj deca 300)(setq enti obj deca -100) (if(not(zerop deca))(setq result(vl-catch-all-apply'(lambda(x)(vlax-invoke-method x "offset"(- deca)))(list enti)))(apa-Copy enti)) (if(not(vl-catch-all-error-p result))(vlax-safearray->list (vlax-variant-value result)))) renvoie une liste des décalages par style(defun dondecastyl (noms / ); (setq noms "Standard") (setq mstyle (entget (cdr (assoc 350 (cdr (member (cons 3 "ACAD_MLINESTYLE") (entget (namedobjdict)))))))) (if(member (cons 3 noms) mstyle) (progn (setq datastyle (entget (cdr (assoc 350 (cdr (member (cons 3 noms) mstyle)))))) (setq listedec(mapcar 'cdr(vl-remove-if-not '(lambda(x)(=(car x)49))datastyle)))) )) Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Tramber Posté(e) le 11 mai 2006 Posté(e) le 11 mai 2006 (defun decal+ (enti deca / ); (setq enti obj deca 300)(setq enti obj deca -100) (if(not(zerop deca))(setq result(vl-catch-all-apply'(lambda(x)(vlax-invoke-method x "offset"(- deca)))(list enti)))(apa-Copy enti)) (if(not(vl-catch-all-error-p result))(vlax-safearray->list (vlax-variant-value result)))) (defun dondecastyl (noms / ); (setq noms "Standard") (setq mstyle (entget (cdr (assoc 350 (cdr (member (cons 3 "ACAD_MLINESTYLE") (entget (namedobjdict)))))))) (if(member (cons 3 noms) mstyle) (progn (setq datastyle (entget (cdr (assoc 350 (cdr (member (cons 3 noms) mstyle)))))) (setq listedec(mapcar 'cdr(vl-remove-if-not '(lambda(x)(=(car x)49))datastyle)))) )) (defun c:decas (/) (setq obj(vlax-ename->vla-object(car(entsel)))) (setq jeud(ssadd)) (setq rep(getstring "\Nom du style : ")) (if(= rep "")(setq rep "Standard")) (if(setq rep(dondecastyl rep)) (progn (foreach p rep (progn (setq donne(decal+ obj p )) (cond((=(length donne)0)(alert "1 décalage impossible")) ((>(length donne)1)(alert "plusieurs décalages sur 1 objet")) ) (foreach q donne (setq jeud(ssadd(vlax-vla-object->ename q)jeud))) ) ) ) ) ) Avec ce code chargé dans un lisp, tu peux faire des décalages en toute sécurité, avec protection des erreurs de décalage et autant d'avertissement. la variable jeud renvoie un jeu de selection basé sur tous les décalages obtenus. Faute de temps.... et de précision, je ne sais pas si tu veux enfermer dans des blocs, garder la ligne ou poly ou spline de départ,.... etc Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
lecrabe Posté(e) le 13 mai 2006 Auteur Posté(e) le 13 mai 2006 Bonjour Tramber Ce que je désire c "approcher" les magnifiques murs de Autodesk Architectural Desktop ...( Tout en gardant la/les polyligne(s) d'origine ) Un bon vieux Autodesk Architectural Desktop 3.0 (sur AutoCAD 2000i) ou Autodesk Architectural Desktop 3.3 (sur AutoCAD 2002) est déjà largement suffisant pour ce que je veux faire en 2D sur des types de lignes d'enfer ! Malheureusement je ne suis pas un développeur et donc mes compétences Lisp / VLisp sont très limités ... SNIFF :o C pourquoi j'ai lancé ce sujet, espérant que quelqu'un avait peut être déja "plus ou moins" développé un super programme pour ce faire ... Le Decapode [Edité le 13/5/2006 par lecrabe] Autodesk Expert Elite Team
Tramber Posté(e) le 13 mai 2006 Posté(e) le 13 mai 2006 Tu les auras dans 2007. Le prog que j'ai présenté là-haut pourrait te satisfaire mais il est très personnel et pas terminé, il fonctionne avec pléthore de bibliothèques de fonctions. Une 'tite question : Tu veux faire des murs composites ? au cas ou le style de multiligne contient + de 2 décalages. Il me reste à ajouter des lignes en bout, générer des régions et extruder, c'est possible. Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Tramber Posté(e) le 13 mai 2006 Posté(e) le 13 mai 2006 (defun decal+ (enti deca / ); (setq enti obj deca 300)(setq enti obj deca -100) (if(not(zerop deca))(setq result(vl-catch-all-apply'(lambda(x)(vlax-invoke-method x "offset"(- deca)))(list enti)))(apa-Copy enti)) (if(not(vl-catch-all-error-p result))(vlax-safearray->list (vlax-variant-value result)))) (defun dondecastyl (noms / ); (setq noms "Standard") (setq mstyle (entget (cdr (assoc 350 (cdr (member (cons 3 "ACAD_MLINESTYLE") (entget (namedobjdict)))))))) (if(member (cons 3 noms) mstyle) (progn (setq datastyle (entget (cdr (assoc 350 (cdr (member (cons 3 noms) mstyle)))))) (setq listedec(mapcar 'cdr(vl-remove-if-not '(lambda(x)(=(car x)49))datastyle)))) )) (defun c:decas (/) (setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object))) (setq spac(vla-get-ModelSpace AcDoc)) (setq obj(vlax-ename->vla-object(car(entsel)))) (setq jeud(ssadd)) (setq rep(getstring "\Nom du style : ")) (if(= rep "")(setq rep "Standard")) (initget 6) (setq repht(getreal(strcat "\nHauteur du mur : "))) (if repht(setq ht repht)) (if(not ht)(setq ht 2000)) (if(setq rep(dondecastyl rep)) (progn (foreach p rep; (setq p(nth 0 rep)) (progn (setq donne(decal+ obj p )) (cond((=(length donne)0)(alert "1 décalage impossible")) ((>(length donne)1)(alert "plusieurs décalages sur 1 objet")) ) (foreach q donne (setq jeud(ssadd(vlax-vla-object->ename q)jeud))) ) ) (setq compt 0) (repeat(1-(sslength jeud)) (setq obj2(vla-copy(vlax-ename->vla-object(ssname jeud compt)))) (setq obj3(vla-copy(vlax-ename->vla-object(ssname jeud(setq compt(1+ compt)))))) (setq l1(vla-AddLine spac (vlax-3d-point(vlax-curve-getPointAtParam obj2(vlax-curve-getStartParam obj2))) (vlax-3d-point(vlax-curve-getPointAtParam obj3(vlax-curve-getStartParam obj3))))) (setq l2(vla-AddLine spac (vlax-3d-point(vlax-curve-getPointAtParam obj2(vlax-curve-getEndParam obj2))) (vlax-3d-point(vlax-curve-getPointAtParam obj3(vlax-curve-getEndParam obj3))))) (setq regio(vla-addRegion spac(vlax-make-variant(vlax-safearray-fill(vlax-make-safearray 9(cons 0(1-(length(list obj2 obj3 l1 l2)))))(list obj2 obj3 l1 l2))))) (setq extru(VLA-ADDEXTRUDEDSOLID spac(car(vlax-safearray->list (vlax-variant-value regio)))ht 0)) (vla-Erase (car(vlax-safearray->list (vlax-variant-value regio)))) (vla-Erase obj2) (vla-Erase obj3) (vla-Erase l1) (vla-Erase l2) ) (setq compt 0) (if jeud(repeat(sslength jeud)(entdel (ssname jeud compt))(setq compt (1+ compt)))) ) ) ) ******************************************************* La fonction DECAS te permet de créer des murs.Mais, pour l'instant, sans question de couleur. Ni mémorisation du style en cours [Edité le 13/5/2006 par Tramber] Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
lecrabe Posté(e) le 13 mai 2006 Auteur Posté(e) le 13 mai 2006 Hello Tramber Je vais tester ton programe et je te tiens au courant ... Pour moi, il est évident que si la polyligne est ouverte, je désire des lignes pour fermer. Dans Autodesk Architectural Desktop, j'ai déja utilisé des murs multi-couches (composites) ...Et ce jusqu'à 4 couches mais bon je ne suis pas du tout un pro du bâtiment ! Ce qui me parait très interessant c'est d'avoir toutes ces objets graphiques dans des couleurs différentes: donc en utilisant les CTB/STB, je pourrais les faire tracer avec une épaisseur voulue ! Mais si le programme demande "en plus" l'épaisseur AutoCAD à appliquer / forcer sur chaque objet graphique (couche en fait), c TOP ! :) Mais mais, voici venir le problème de la priorité d'affichage / tracer de ces mêmes objets ! :o Vu de loin, ça me semble pas simple à développer ... :casstet: Le Decapode Autodesk Expert Elite Team
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