CGDESSINE Posté(e) le 12 juillet 2004 Posté(e) le 12 juillet 2004 Comment faire un solprofil depuis une vue dynamique(perspective)merci d'avance
extrusion Posté(e) le 12 juillet 2004 Posté(e) le 12 juillet 2004 Et bien je crois qu'il faut passer dans l'espace papier. ...
CGDESSINE Posté(e) le 12 juillet 2004 Auteur Posté(e) le 12 juillet 2004 Ok, je te remercie de l’info mais je la connais déjà et oui mon pbleme c de faire un solprofil d’une vue dynamique 3D et rabattre à plat(2d-SOLPROFIL).J’y arrive très biens avec les vues de faces et les vues isométriques mais pas avec une vue dyn.Si tu vois une solution je t’en remercie par avance.
bonuscad Posté(e) le 12 juillet 2004 Posté(e) le 12 juillet 2004 Une solution est possible, est ce qu'elle va te convenir? Installe une imprimantre HPGL générique.Imprime avec cette imprimante dans un fichier PLTpuis à l'aide du lisp suivant (récupéreé sur le net) récupère le résultat du tracage dans un dwg. NB: Ce procédé peut servir aussi pour mettre à plat (Z=0) des entités 3D récalcitrantes. ;HPGIN.LSP Procedure to convert HPGL to AutoCAD commands (defun C:HPGIN (/ hpgitem hpgistr hpgcha hpgchi hpgfile hpgpen hpgprev hpgx0 hpgx0s hpgY0 hpgY0s hpgx1 hpgx1s hpgY1 hpgY1s hpgscale hpgxoffs hpgYoffs hpgxstr hpgystr hpgtest hpgcomma hpgp0s hpgp1s ) (setq oldecho (getvar "CMDECHO")) ; Save command echo status (setvar "CMDECHO" 0) ; Turn off command echo ;Get the HPGL file name from the user ;(setq hpgname (getstring T "What is the HPGL file name? ")) ;(princ " HPGL file -> ") ;(princ hpgname) (setq hpgname (getfiled "Sélectionner un fichier HPGL en format ASCII" "/dao/" "plt" 12)) (setq hpgfile (open hpgname "r")) ; Check for file error (if (= hpgfile nil) (princ " ... ne peut ouvrir le fichier! \n") ; Quit if open fails ; else (progn (princ " ... fichier ouvert! \n") ; Initialize/define variables (setq hpgitem 0) ; Clear item status (setq hpgistr "") ; Clear item string (setq hpgcha "") ; Clear first char (setq hpgchi 0) ; Read Character (integer) (setq hpgpen 0) ; Set Pen Up (Pen Down = 1) (setq hpgprev 0) ; Previous Pen Status (setq hpgx0 0.0 hpgy0 0.0) ; Default x0,Y0 (line start) (setq hpgx0s "" hpgy0s "") ; Default x0,Y0 strings (setq hpgx1 0.0 hpgy1 0.0) ; Default x1,Y1 (line end) (setq hpgx1s "" hpgy1s "") ; Default x1,Y1 strings (setq hpgscale 0.001) ; scale factor (setq hpgxoffs 0.0 hpgYoffs 0.0) ; x,y offsets ; Read Each char in the file (while (setq hpgchi (read-char hpgfile)) (progn ; Convert integer read to ascii char (setq hpgcha (chr hpgchi)) ; check to see if we are between HPGL commands (if (or (< hpgchi 32) (= hpgcha ";")) (progn (setq hpgitem 1) ; We are between commands now ) ; else We are part of an Item and not between commands (progn ; Check to see if we just finished a reading a command (if (= hpgitem 1) (progn ; Yes, we have a command so let's do it! ; Parse Commands Section ; Force the command item into UPPER CASE (setq hpgistr (strcase hpgistr)) ; Use this print command if you want to see the HPGL Item for debug ; (princ hpgistr) ; (princ "\n") ; Check for HPGL Select Pen (if (= (substr hpgistr 1 2) "SP") (progn ; Make a layer for each pen with color=pen color (if (> (strlen hpgistr) 2) (progn ; (setvar "CMDECHO" 1) (command "_.Layer" "_make" (strcat "pen" (substr hpgistr 3 1)) "_color" (substr hpgistr 3 1) "" "") ; (setvar "CMDECHO" 0) ) ) ) ) ; end Select Pen Check ; Check for HPGL Pen Commands, first save previous pen status (setq hpgprev hpgpen) ; Check for HPGL Pen Up (if (= (substr hpgistr 1 2) "PU") (progn (setq hpgpen 0) ; set pen up status = 0 ) ) ; end of Pen Up ; Check for HPGL Pen Down (if (= (substr hpgistr 1 2) "PD") (progn (setq hpgpen 1) ; set pen down status = 1 ) ) ; end of Pen Down ; Check for coordinate in command by looking for a comma(,) (setq hpgtest 0) ; initial incremental test position (setq hpgcomma 0) ; initial comma position (setq hpgxstr "" hpgystr "") ; initialize coordinates ; Do for each char at test position in item string (while (< hpgtest (strlen hpgistr)) (progn (setq hpgtest (+ hpgtest 1)) ; next test position (if (= (substr hpgistr hpgtest 1) ",") ; If we find a comma .. (setq hpgcomma hpgtest) ; record the position ) ; end if comma found (if (= 0 hpgcomma) ; if no comma yet ... (progn ; x coordinate (if (> hpgtest 2) ; Skip first 2 letters (progn ; Record x coordinate (setq hpgxstr (strcat hpgxstr (substr hpgistr hpgtest 1))) ) ) ; end if (hpgtest > 2) ) ; else (progn ; if comma ... (if (< hpgtest (strlen hpgistr)) ; Y coordinate (progn ; Skip comma by adding 1 to position (setq hpgystr (strcat hpgystr (substr hpgistr (+ 1 hpgtest) 1))) ) ) ; end if (hpgtest < length of item) ) ) ; end if hpgcomma ) ) ; end of coordinate check while ; Check to see if the coordinates from the above comma test are good (if (> hpgcomma 2) (progn ; we have a good coordinate! ; Multiply each coordinate by hpgscale and add offset (if (= 0 hpgpen) (progn ; The Pen is UP, use the ending coordinates (setq hpgx1 (+ hpgxoffs (* hpgscale (atof hpgxstr)))) (setq hpgY1 (+ hpgYoffs (* hpgscale (atof hpgystr)))) ) ; else The Pen is DOWN (progn ; shift old ending coordinates to start (setq hpgx0 hpgx1) (setq hpgY0 hpgY1) ; use ending coordinates (setq hpgx1 (+ hpgxoffs (* hpgscale (atof hpgxstr)))) (setq hpgY1 (+ hpgYoffs (* hpgscale (atof hpgystr)))) ; If the Pen was previously DOWN then ... (if (= hpgprev 1) (progn ; Do the AutoCAD LINE command! ; Convert coordinate values to coordinate strings (setq hpgx0s (rtos hpgx0 1 8)) (setq hpgY0s (rtos hpgY0 1 8)) (setq hpgp0s (strcat (strcat hpgx0s ",") hpgY0s)) (setq hpgx1s (rtos hpgx1 1 8)) (setq hpgY1s (rtos hpgY1 1 8)) (setq hpgp1s (strcat (strcat hpgx1s ",") hpgY1s)) ; (setvar "CMDECHO" 1) (command "_.Line" hpgp0s hpgp1s "") ; (setvar "CMDECHO" 0) ) ) ; end if hpgprev =1 Pen was DOWN ) ) ; end if hpgpen Up or Down ) ) ; end if comma and good coordinate ; End of Parse Commands Section ; Go on with the rest of the program ; Clear Item status and Item string (setq hpgitem 0) (setq hpgistr "") ) ) ; end of command do it ; Here, we have either done and cleared a command or ; we are still building a command from file read chars. (setq hpgistr (strcat hpgistr hpgcha)) ) ; end of inside an HPGL item ) ; end if hpgchi = control char ) ) ; end while file read loop ; Clean up (close hpgfile) ) ; end of else (file opened) ) ; end of if hpgfile ; Restore environment changes (setvar "CMDECHO" oldecho) (princ) ) ; end of C:hpgin() program Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
bonuscad Posté(e) le 12 juillet 2004 Posté(e) le 12 juillet 2004 Une solution est possible, est ce qu'elle va te convenir? Installe une imprimantre HPGL générique.Imprime avec cette imprimante dans un fichier PLTpuis à l'aide du lisp suivant (récupéreé sur le net) récupère le résultat du tracage dans un dwg. NB: Ce procédé peut servir aussi pour mettre à plat (Z=0) des entités 3D récalcitrantes. ;HPGIN.LSP Procedure to convert HPGL to AutoCAD commands (defun C:HPGIN (/ hpgitem hpgistr hpgcha hpgchi hpgfile hpgpen hpgprev hpgx0 hpgx0s hpgY0 hpgY0s hpgx1 hpgx1s hpgY1 hpgY1s hpgscale hpgxoffs hpgYoffs hpgxstr hpgystr hpgtest hpgcomma hpgp0s hpgp1s ) (setq oldecho (getvar "CMDECHO")) ; Save command echo status (setvar "CMDECHO" 0) ; Turn off command echo ;Get the HPGL file name from the user ;(setq hpgname (getstring T "What is the HPGL file name? ")) ;(princ " HPGL file -> ") ;(princ hpgname) (setq hpgname (getfiled "Sélectionner un fichier HPGL en format ASCII" "/dao/" "plt" 12)) (setq hpgfile (open hpgname "r")) ; Check for file error (if (= hpgfile nil) (princ " ... ne peut ouvrir le fichier! \n") ; Quit if open fails ; else (progn (princ " ... fichier ouvert! \n") ; Initialize/define variables (setq hpgitem 0) ; Clear item status (setq hpgistr "") ; Clear item string (setq hpgcha "") ; Clear first char (setq hpgchi 0) ; Read Character (integer) (setq hpgpen 0) ; Set Pen Up (Pen Down = 1) (setq hpgprev 0) ; Previous Pen Status (setq hpgx0 0.0 hpgy0 0.0) ; Default x0,Y0 (line start) (setq hpgx0s "" hpgy0s "") ; Default x0,Y0 strings (setq hpgx1 0.0 hpgy1 0.0) ; Default x1,Y1 (line end) (setq hpgx1s "" hpgy1s "") ; Default x1,Y1 strings (setq hpgscale 0.001) ; scale factor (setq hpgxoffs 0.0 hpgYoffs 0.0) ; x,y offsets ; Read Each char in the file (while (setq hpgchi (read-char hpgfile)) (progn ; Convert integer read to ascii char (setq hpgcha (chr hpgchi)) ; check to see if we are between HPGL commands (if (or (< hpgchi 32) (= hpgcha ";")) (progn (setq hpgitem 1) ; We are between commands now ) ; else We are part of an Item and not between commands (progn ; Check to see if we just finished a reading a command (if (= hpgitem 1) (progn ; Yes, we have a command so let's do it! ; Parse Commands Section ; Force the command item into UPPER CASE (setq hpgistr (strcase hpgistr)) ; Use this print command if you want to see the HPGL Item for debug ; (princ hpgistr) ; (princ "\n") ; Check for HPGL Select Pen (if (= (substr hpgistr 1 2) "SP") (progn ; Make a layer for each pen with color=pen color (if (> (strlen hpgistr) 2) (progn ; (setvar "CMDECHO" 1) (command "_.Layer" "_make" (strcat "pen" (substr hpgistr 3 1)) "_color" (substr hpgistr 3 1) "" "") ; (setvar "CMDECHO" 0) ) ) ) ) ; end Select Pen Check ; Check for HPGL Pen Commands, first save previous pen status (setq hpgprev hpgpen) ; Check for HPGL Pen Up (if (= (substr hpgistr 1 2) "PU") (progn (setq hpgpen 0) ; set pen up status = 0 ) ) ; end of Pen Up ; Check for HPGL Pen Down (if (= (substr hpgistr 1 2) "PD") (progn (setq hpgpen 1) ; set pen down status = 1 ) ) ; end of Pen Down ; Check for coordinate in command by looking for a comma(,) (setq hpgtest 0) ; initial incremental test position (setq hpgcomma 0) ; initial comma position (setq hpgxstr "" hpgystr "") ; initialize coordinates ; Do for each char at test position in item string (while (< hpgtest (strlen hpgistr)) (progn (setq hpgtest (+ hpgtest 1)) ; next test position (if (= (substr hpgistr hpgtest 1) ",") ; If we find a comma .. (setq hpgcomma hpgtest) ; record the position ) ; end if comma found (if (= 0 hpgcomma) ; if no comma yet ... (progn ; x coordinate (if (> hpgtest 2) ; Skip first 2 letters (progn ; Record x coordinate (setq hpgxstr (strcat hpgxstr (substr hpgistr hpgtest 1))) ) ) ; end if (hpgtest > 2) ) ; else (progn ; if comma ... (if (< hpgtest (strlen hpgistr)) ; Y coordinate (progn ; Skip comma by adding 1 to position (setq hpgystr (strcat hpgystr (substr hpgistr (+ 1 hpgtest) 1))) ) ) ; end if (hpgtest < length of item) ) ) ; end if hpgcomma ) ) ; end of coordinate check while ; Check to see if the coordinates from the above comma test are good (if (> hpgcomma 2) (progn ; we have a good coordinate! ; Multiply each coordinate by hpgscale and add offset (if (= 0 hpgpen) (progn ; The Pen is UP, use the ending coordinates (setq hpgx1 (+ hpgxoffs (* hpgscale (atof hpgxstr)))) (setq hpgY1 (+ hpgYoffs (* hpgscale (atof hpgystr)))) ) ; else The Pen is DOWN (progn ; shift old ending coordinates to start (setq hpgx0 hpgx1) (setq hpgY0 hpgY1) ; use ending coordinates (setq hpgx1 (+ hpgxoffs (* hpgscale (atof hpgxstr)))) (setq hpgY1 (+ hpgYoffs (* hpgscale (atof hpgystr)))) ; If the Pen was previously DOWN then ... (if (= hpgprev 1) (progn ; Do the AutoCAD LINE command! ; Convert coordinate values to coordinate strings (setq hpgx0s (rtos hpgx0 1 8)) (setq hpgY0s (rtos hpgY0 1 8)) (setq hpgp0s (strcat (strcat hpgx0s ",") hpgY0s)) (setq hpgx1s (rtos hpgx1 1 8)) (setq hpgY1s (rtos hpgY1 1 8)) (setq hpgp1s (strcat (strcat hpgx1s ",") hpgY1s)) ; (setvar "CMDECHO" 1) (command "_.Line" hpgp0s hpgp1s "") ; (setvar "CMDECHO" 0) ) ) ; end if hpgprev =1 Pen was DOWN ) ) ; end if hpgpen Up or Down ) ) ; end if comma and good coordinate ; End of Parse Commands Section ; Go on with the rest of the program ; Clear Item status and Item string (setq hpgitem 0) (setq hpgistr "") ) ) ; end of command do it ; Here, we have either done and cleared a command or ; we are still building a command from file read chars. (setq hpgistr (strcat hpgistr hpgcha)) ) ; end of inside an HPGL item ) ; end if hpgchi = control char ) ) ; end while file read loop ; Clean up (close hpgfile) ) ; end of else (file opened) ) ; end of if hpgfile ; Restore environment changes (setvar "CMDECHO" oldecho) (princ) ) ; end of C:hpgin() program Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
CGDESSINE Posté(e) le 12 juillet 2004 Auteur Posté(e) le 12 juillet 2004 Je te remercie de m'aider dans mon pbleme.Je viens d'éssayer avec ton lispje tape hpgin pour charger le fichier plt et la un message m'indique qu'il et déja ouvertAlors que tout est fermé.Connais tu les fichiers DXB.Je suis de retour demain pour voirEn tout cas merci a ce super site et a vous....
bonuscad Posté(e) le 13 juillet 2004 Posté(e) le 13 juillet 2004 Rectification, ce n'est pas mon lisp ;) Le message est tout à fait normal, cela veut dire que le fichier PLT est ouvert ET est en cours de lecture. A mon souvenir cela peut être très long si ton plt est volumineux (il n'y a aucun indice sur la progression de la commande)Si tu veux voir comment il progresse tu peut remettre la variable CMDECHO à 1 dans le code ou enlever le ";" en début de la ligne appropriée. Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
CGDESSINE Posté(e) le 13 juillet 2004 Auteur Posté(e) le 13 juillet 2004 OK je crois comprendre que l’ouverture et lente cela arrive avec des gros fichiers,Mais ce que je ne comprends pas c que je n’ai toujours pas de fichier même aprèsAvoir la ligne de commande :Pour l’impression en PLT je passe dans l’espace papier et je crée une fenêtreEt pour l’impression je donne à cette fenêtre l’option tracer en ligne cachée.Je trace dans un fichier…Tout est bon a mon avis mais je n’ai toujours rien a l’écran. :exclam: Escuse moi je croyais que c'était ton lisp
bonuscad Posté(e) le 13 juillet 2004 Posté(e) le 13 juillet 2004 Bon si tu es sur de ton PLT fait avec du HPGL générique. Dans un nouveau dessin, charge le lisp, execute le avec ton plt et une fois au message commande fais un zoom etendu Tu devrait avoir ton dessin constituer essentiellement de lignes rouge (choix du programmeur). Si ça ne fonctionne pas désolé, c'est pas moi qui ai écrit cela. J'en possède un autre qui fait la même chose mais avec des polylignes et des épaisseur différentes pour représenter les couleurs différentes. Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
CGDESSINE Posté(e) le 15 juillet 2004 Auteur Posté(e) le 15 juillet 2004 Je suis bien la procédure, mais je n'ai toujours rien à l'écran pourtant je pense qu'il charge car cela met un petit moment, sinon connait tu un logiciel pour ouvrir un plt...Merci
bonuscad Posté(e) le 15 juillet 2004 Posté(e) le 15 juillet 2004 Désolé pour tes déboires. Je ne connais pas de logiciel pour ouvrir un PLT à part pour imprimer directement (ce n'est pas ce qui t'interesse) J' ai refait un essai avec des solides 3D en vue dynanamique dans une fenetre de présentation en cachant les objets, aucun problème sous 2002. Cependant j'ai remarqué qu'il fallait désactiver l'accroche objet avant de lancer la commande, autrement il créer des lignes de longueurs nulles. C'est peut être tout simplement la cause de ton problème. Autrement pas de solutions. @+ Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
CGDESSINE Posté(e) le 16 juillet 2004 Auteur Posté(e) le 16 juillet 2004 Je vais pas t'embéter plus longtemp, je viens de télécharger un petit logiciel partagiciel qui et la meme chose mais en ARX.Cela fonctionne tres bien mais le probleme vu que c'et une démo il me limite au nombres d'objet importés.Je t'informe si je le trouve en gratuiciel.Bon week-end....
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