Aller au contenu

Messages recommandés

Posté(e)

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.

 

Posté(e)

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 PLT

puis à 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

Posté(e)

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 PLT

puis à 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

Posté(e)

Je te remercie de m'aider dans mon pbleme.

Je viens d'éssayer avec ton lisp

je tape hpgin pour charger le fichier plt

et la un message m'indique qu'il et déja ouvert

Alors que tout est fermé.

Connais tu les fichiers DXB.

Je suis de retour demain pour voir

En tout cas merci a ce super site et a vous....

Posté(e)

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

Posté(e)

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ès

Avoir la ligne de commande :

Pour l’impression en PLT je passe dans l’espace papier et je crée une fenêtre

Et 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

Posté(e)

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

Posté(e)

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

Posté(e)

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

Posté(e)

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....

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é