-
Compteur de contenus
63 -
Inscription
-
Dernière visite
-
Jours gagnés
2
Flobott a gagné pour la dernière fois le 11 septembre 2023
Flobott a eu le contenu le plus aimé !
Visiteurs récents du profil
Flobott's Achievements
-
Salut la communauté, Fin du mois d'aout un client ma demandé de lui transformer un PDF (vectoriel) en DWG car il n'avait plus de source et dans l'impossibilité de les récupérer. J'ai fait une routine Lisp pour la conversion PDF en DWG par lot en utilisant la commande "ImportPDF" d'AutoCAD. Je vous la partage, vu l'occasion du post. (Cela reste de la conversion, donc rien de parfait avec "importPDF" mais cela aide pour les vieux plan avec base vectoriel et un peut de remise en forme) (Rien de fou, un truc fait en une journée qui peut dépanner, je n'ai pas eu le temps de simplifier le LISP, ni de faire la gestion d'erreur si trop de page PDF demandé, le FILDIA sautera si cela arrive) ;------------------------------------------------------------------------------- Début --------------------------------------------------------------------------------------------- (defun C:PDFtoDWG (/ var1 a b repertoire PtBloc NbPg res NbPgPDF result result1 InsertNomDuPDF CompNbPg TxtLienFichier ) ;Début de la fonction boite de dialogue pour la selection d'un dossier. ;--------------------------------------------------------------------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------------------------------------------------------------------- (defun browseForFolder ( / sh folder folder1 folderobject folderobject1 ) (vl-load-com) (setq sh (vla-getInterfaceObject (vlax-get-acad-object) "Shell.Application" ) ) (setq folder (vlax-invoke-method sh 'BrowseForFolder (vla-get-HWND (vlax-get-Acad-Object)) "Sélectionnez le fichier PDF pour la convertion graphique." 16384 ; Permet de parcourir tout : la boîte de dialogue de navigation affiche les fichiers ainsi que les dossiers. "J:\\" ) ) (setq folder1 (vlax-invoke-method sh 'BrowseForFolder (vla-get-HWND (vlax-get-Acad-Object)) "Sélectionnez le dossier pour la dépose des fichiers DWG. " 64 ; Activez la fonction glisser-déposer dans la boîte de dialogue, la réorganisation, les menus contextuels, les nouveaux dossiers, la suppression et d'autres commandes de menu contextuel. "J:\\" ) ) (vlax-release-object sh) (if folder (progn (setq folderobject (vlax-get-property folder 'Self) ) (setq result (vlax-get-property FolderObject 'Path) ) (vlax-release-object folder) (vlax-release-object FolderObject) ) ) (if folder1 (progn (setq folderobject1 (vlax-get-property folder1 'Self) ) (setq result1 (vlax-get-property FolderObject1 'Path) ) (vlax-release-object folder1) (vlax-release-object FolderObject1) (if (/= (substr result1 (strlen result1)) "\\" ) (setq result1 (strcat result1 "\\") ) result1 ) ) ) ) ;--------------------------------------------------------------------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------------------------------------------------------------------- ;Fin de la fonction boite de dialogue pour la selection d'un dossier. ;Début de la fonction de calcul du nombre de page d'un PDF. ;--------------------------------------------------------------------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------------------------------------------------------------------- (defun _PDFPageCount ( filename / fob fso mat reg str ) (vl-load-com) (if (and (setq filename (findfile filename)) (eq ".PDF" (strcase (vl-filename-extension filename))) ) (vl-catch-all-apply (function (lambda ( / _ReadAsTextFile _CountPage ) (defun _ReadAsTextFile ( fso fn / fob str res ) (setq fob (vlax-invoke fso 'getfile fn) str (vlax-invoke fso 'opentextfile fn 1 0) res (vlax-invoke str 'read (vlax-get fob 'size)) ) (vlax-invoke str 'close) (vlax-release-object str) (vlax-release-object fob) res ) (defun _CountPage ( rgx str / mat pag ) (vlax-put-property rgx 'pattern "/Type\\s*/Page[^s]") (vlax-put-property rgx 'ignorecase actrue) (vlax-put-property rgx 'global actrue) (setq mat (vlax-invoke rgx 'execute str) pag (vlax-get mat 'count) ) (vlax-release-object mat) (if (zerop pag) 1 pag) ) (setq fso (vlax-create-object "Scripting.FileSystemObject") reg (vlax-create-object "VBScript.RegExp") str (_ReadAsTextFile fso filename) res (_CountPage reg str) ) ) ) ) ) (foreach obj (list str fob mat fso reg) (vl-catch-all-apply 'vlax-release-object (list obj)) ) res (setq NbPgPDF res) ) (princ) ;--------------------------------------------------------------------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------------------------------------------------------------------- ;Fin de la fonction de calcul du nombre de page d'un PDF. (setq var1 (getvar "FILEDIA")) ;Sauvegarde les variable de l'utilisateur FILEDIA. (setvar "FILEDIA" 0) ;Empèche l'ouverture de la boîte de dialogue dans AutoCAD -> Saisie sur ligne de commande. (princ "\n---------------------------------------" ) (princ "\nSélection par boîtes de dialogue." ) (princ "\n---------------------------------------" ) (princ "\n ") (if (not (setq repertoire (browseForFolder))) (progn (princ "Vous avez annulée la routine.") (setvar "FILEDIA" var1) ;Active les invites ou la boîte de dialogue pour les valeurs d'attributs pendant la commande INSERER. (exit) ) ) ;Ouvre les explorateurs pour définir le fichier PDF et le dossier de dépose des DWG. (setq InsertNomDuPDF result) ;Définie le lien du PDF a importer pour convertion. (princ "\n---------------------------------------" ) (princ "\nCalcul du nombre de pages du PDF en cours." ) (princ "\n---------------------------------------" ) (princ "\n ") (_PDFPageCount InsertNomDuPDF) ;Lance la fonction de calcul du nombre de page du PDF en fonction du PDF séléctionné précédement. (princ "\n---------------------------------------" ) (princ (strcat "\nLe PDF sélectionné a " (itoa res)" pages." )) (princ "\n---------------------------------------" ) (princ "\n ") (initget 0) ;Autorise une valeur nul. (if (= nil (setq b (getint (strcat "\nEntree le nombre de pages <" (itoa res) "> : ")))) ;Si la valeur est nul alors la valeurs par défaut contenue dans "res" est utilise. (setq b (itoa res)) ;Vateur par défaut "res" le nbrs de page du PDF. (setq b (itoa b)) );Sinon l'utilisateur indique la valeur de la page voulu. (setq CompNbPg 1) ;Initialise le compteur a le valeur 1. (setq a '(0.0 0.0 0.0)) ;définie les coordonées d'insertion du PDF. (setq PtBloc a ) ;Definie les coordonnées x, y et z du point d'incertion du PDF. (command "_save" "dessinTemp.dwg" "_Y") ;Sauvegarde en dessin temporaire. (while (<= CompNbPg (atoi b)) ;Tant que le nombre de pages est inférieur ou égale avec la valeur b. (command "_erase" "_all" "") ;Supprime l'ensemble du dessin. (setq PtBloc a ) ;Definie les coordonnées x, y et z du point d'insertion du PDF. (command "_-PDFIMPORT" "f" result CompNbPg PtBloc 1 0) ;Insert le fichier PDF vectoriel en élement graphique. (command "_zoom" "_e") ;Zoom sur l'ensemble du dessin. (command "_purge" "_all" "*" "_n") (command "_purge" "_all" "*" "_n") (command "_purge" "_all" "*" "_n") ;Purge l'ensemble du dessin (3 passes). (setq TxtLienFichier (strcat result1(strcat "PDF-PAGE-"(itoa CompNbPg)".dwg"))) ;Définie le lien de créeation des fichier dwg pour chaque pdf. (command "_save" TxtLienFichier "_y") ;Sauvegarde en dessin temporaire. (setq CompNbPg (1+ CompNbPg )) ;Incrémentation du compteur. );Fin de la boucle. (command "_erase" "_all" "") ;Supprime l'ensemble du dessin. (setvar "FILEDIA" var1) ;Charge les variables de l'utilisateur FILEDIA. (princ "\n---------------------------------------" ) (princ "\nLa routine LISP : PDFtoDWG est terminée." ) (princ "\n---------------------------------------" ) (princ "\n ") (alert "La routine LISP : PDFtoDWG est terminée.") ;Alerte l'utilisateur sur la fin de l'application (command "_close" "_Y") ;Fermeture du dessin temporaire. (princ) ) ;------------------------------------------------------------------------- FIN -------------------------------------------------------------------------------------- En espérant que cela aide ^^
-
[Resolu] Aide dessin 3D - Demi Anneau
Flobott a répondu à un(e) sujet de Flobott dans AutoCAD 2020-2024
@LElemurien Merci pour la troisième technique, je n'ai testé que le premier tiers par manque de temps mais je trouve cette façon de faire très simple 🙂 -
[Resolu] Aide dessin 3D - Demi Anneau
Flobott a répondu à un(e) sujet de Flobott dans AutoCAD 2020-2024
@m.l21 j'avais le souci car je n'avais pas fait de révolution de ma base en polyligne fermée et en mode Objet. Cela fonctionné très bien avec un objet pour le coup ^^ -
[Resolu] Aide dessin 3D - Demi Anneau
Flobott a répondu à un(e) sujet de Flobott dans AutoCAD 2020-2024
Merci @DOMI pour l'aide et le temps passé ^^ J'ai fini par réussir mon objet 3D : Anneau_de_peinture_échantillon.dwg Alors pour faire le point et mon constat sur ma modélisation 3D : 1er impératif constaté qui m'a posé problème dans la révolution ou l'extrusion, l'objet auquel on applique ces commandes doit être une suite de polyligne jointe entre elle. J'ai dû recrée ma base en polyligne et joindre toutes les polylignes entre elles pour obtenir un objet 3D à la révolution et sans cela j'obtenais des surfaces, même en mode objet. Ensuite à la soustraction, j'obtenais un "Error Code Number is 18003" qui m'empêché de la réaliser et qui étais dû au fait que les deux surfaces supérieures des mes objets 3D était parfaitement l'une sur l'autre dans le plan, j'ai donc fait dépasser ma pièce à soustraire de 0.01 vers l'extérieur de mon anneau et la soustraction a fonctionné. Merci beaucoup pour l'aide @DOMI @m.l21 , la modélisation 3D sur AutoCAD n'est pas très intuitive, je l'avoue mais une fois certaines bases acquises cela semble accessible et correct en résultat. -
[Resolu] Aide dessin 3D - Demi Anneau
Flobott a répondu à un(e) sujet de Flobott dans AutoCAD 2020-2024
-
[Resolu] Aide dessin 3D - Demi Anneau
Flobott a répondu à un(e) sujet de Flobott dans AutoCAD 2020-2024
J'ai compris que je devais faire ma révolution en mode SOLIDE car par défaut je suis en surface et maintenant j'arrive à soustraire mes trois profils 😄 Par contre chose que je ne comprends pas c'est que je suis creux donc je vois l'intérieur de mon anneau, comment me retrouver avec un solide 3D plein ? -
[Resolu] Aide dessin 3D - Demi Anneau
Flobott a répondu à un(e) sujet de Flobott dans AutoCAD 2020-2024
Pour la deuxième méthode @DOMI, j'ai bien réalisé mes formes jusque-là merci à vous deux pour l'utilisation de la révolution. Pour la partie création des 3 profils à soustraire pas de soucis pour les faire mais par contre lors de la soustraction, je n'ai que la partie supérieure de l'anneau qui se retire, j'ai fait un teste en montant ma pièce, en faisant des unions sur mes surfaces et cela sans résultat différent. j'ai donc un souci sur les deux méthodes proposé lors de ma réalisation, je vous remets le fichier .dwg Anneau_de_peinture_échantillon.dwg pour toute évaluation sur mes réalisations afin de déterminé si j'ai fait une erreur dans ma conception. -
[Resolu] Aide dessin 3D - Demi Anneau
Flobott a répondu à un(e) sujet de Flobott dans AutoCAD 2020-2024
Je commence en testant la méthode de @m.l21 Pour les partie révolution, pas de soucis j'ai réussi a faire la base de mon anneau et la partie superieur en 1/3 mais je bloque sur la commande areteaccord ; Petit code erreur 12059, je suis partie sur un rayon 1.0 par défaut en sélectionnant l'arête horizontale comme cité sans résultat pour le moment, j'aimerais bien une explication sur l'utilisation de cette commande dans notre situation. Je testerais la deuxième méthode dans l'après-midi. -
[Resolu] Aide dessin 3D - Demi Anneau
Flobott a répondu à un(e) sujet de Flobott dans AutoCAD 2020-2024
Merci pour les réponses, le Week-end arrivant je vais pouvoir tester tout cela mais le résultat du poste de m.l21 est bien ce que je recherche à faire ^^ -
Flobott a commencé à suivre [Resolu] Aide dessin 3D - Demi Anneau
-
Bonjour la communauté, Je suis en découverte d'AutoCAD en 3D, n'ayant fait que du 2D à mes débuts et je bloque sur la réalisation de ma première pièce. En début de réalisation, je me suis fait un croquis 2D pour visualiser ce que je souhaitais faire : J'ai fait la base en appuyer/tirer mes deux première cercle pour faire l'anneau et la partie supérieure incurvée avec un lissage sur 4 cercles avec se résulta : Et je les ai assemblés en l'est posant l'un sur l'autre : Donc ma premier question, peut-on réaliser mon anneau actuellement fait en deux parties d'un seul élément ? car en réalisant le lissage sur les 4 cercles j'obtiens une hauteur plus grande que voulue : Ma technique n'est pas bonne. Ensuite je souhaitais séparer le haut de l'anneau incurvé en 3 parties mais sans réussite de mon côté car le lissage ne marche plus sur une surface plus complexe. Si quelqu'un, peut me donner des conseils et m'assistés pour la réalisation de ma pièce en m'expliquant certains principes et quelle étape réalisée. En vous remerciant d'avance, je joins mon DWG au sujet comme base. Anneau_de_peinture_échantillon.dwg
-
Mon raccourci est bien pour le passage d'onglet à onglet, autant pour moi je n'avais pas compris que tu voulais passer de présentation en présentation.
-
Salut, Pour faire défiler les onglets sur AutoCAD tu peux utiliser le raccourci ctrl+TAB , comme sur un navigateur internet par exemple. Le défilement se fait toujours de l'onglet de gauche vers l'onglet de droite, en gardant ctrl enfoncé, chaque appui sur TAB fait passé sur l'onglet suivant. Bon défilement.
-
Pour ma part, de mon côté : 100% de mes blocs sont du calque 😜
-
Comment faire un bouton avec une image dans un DCL ?
Flobott a répondu à un(e) sujet de DenisHen dans Pour aller plus loin en LISP
@didier Pas de soucis, je t'ai fait un extrait fonctionnel en vitesse, commande TL. Tuile_alignees.lsp Ne le laisse pas trop de côté, ton site m'a bien aidé à mes débuts (et pas que à mes début) dans le DCL et je ne dois pas être le seul mais un temps pour tous c'est mieux ^^ -
Comment faire un bouton avec une image dans un DCL ?
Flobott a répondu à un(e) sujet de DenisHen dans Pour aller plus loin en LISP
@didier Tu obtiens un alignement sur leurs bases malgré la ligne et les colonnes, je te fournis en pièce jointe un extrait de mon code (entre les ligne 242 et 567), en espérant que cela t'aide.Extrait_DCL.lsp @DenisHen Super t'as trouvaille, je pense que top et bottom doivent aussi fonctionner, à tester. Pour ma part si je change mes "vertical_margin=none;" en "vertical_margin=centered;" cela me donne le même resultat que si je n'avais pas mis de "vertical_margin=none;". et avec "vertical_margin=none;" en colonne dans une ligne j'ai un bon résultat : J'espère que mon code peut vous aidez à aligner différentes tuiles, dans mon cas : toggle, edit_box, text et image_button sont alignées.
