Communauté
AutoCAD – tous produits - Français
Bienvenue sur les forums AutoCAD d’Autodesk. Partagez vos connaissances, posez des questions, et explorez les sujets AutoCAD populaires.
annuler
Affichage des résultats de 
Afficher  uniquement  | Rechercher plutôt 
Vouliez-vous dire : 

Type de ligne impossible à purger !

14 RÉPONSES 14
RÉSOLU
Répondre
Message 1 sur 15
otobox
2389 Visites, 14 Réponses

Type de ligne impossible à purger !

Salut à tous,

 

j'ai un type de ligne Phantom qui arrive alors que je charge des blocs via une palette et que je n'arrive pas à purger...

Je précise que les blocs importés n'ont pas ce type de ligne, pas plus que le dessin où sont stockés ces blocs.

 

J'ai tout supprimé sur un dessin test, j'ai purgé à fond, y compris avec le lisp JAV, je pense qu'il ne reste rien dedans, seulement ce type de ligne Phantom...

 

Auriez-vous une solution à ce problème ? Versions ACAD essayées : 2013 et 2015 win 7 et 8.1 64 bits.

 

Merci,

 

JM

14 RÉPONSES 14
Message 2 sur 15
Kevin_Megel
en réponse à: otobox

J'ai essayer sur MAC, il me dit qu'il ne trouve rien a purger

 

Kevin Megel
Ce post vous a été utile ? N'hésitez pas à aimer ce post.
Ce post a-t-il répondu à votre question ? Cliquez sur le bouton Accepter la solution.

EESignature

Je suis un simple utilisateur, je ne travaille pas pour Autodesk

Message 3 sur 15
otobox
en réponse à: Kevin_Megel

Ca je sais bien, n'empêche que dans un dessin vide il reste un type de ligne Phantom et qu'il ne devrait pas être là...

Message 4 sur 15
kwizats_haderack
en réponse à: otobox

Salut,
c'est normal, il est utilisé dans le dessin.
Je te laisse chercher ou je te dis où il est ?
Je sais, je suis cruel, lol
@+

Bien cordialement / Best regards

----------------------------------------------------

Erwan ( FRENCH AUTOCAD M.E.P CAD/BIM MANAGER )
Message 5 sur 15
_gile
en réponse à: kwizats_haderack

Salut,

 

Comme tu sembles vouloir programmer AutoCAD avec .NET, je ne saurais trop te recommander le plug-in MgdDbg.

Tu peux télécharger depuis ici la version 2012/2013, à ma connaissance il n'y a peu de mise à jour. Si tu utilises AutoCAD 2014 (pour 2015, je n'ai pas encore essayé), tu peux modifier le fichier PackageContents.xml du réperoire :

%appdata%\Autodesk\ApplicationPlugins\Autodesk DWG MgdDBG.bundle

Dans le noeud :

<Components Description="AutoCAD 2013" >

  <RuntimeRequirements ... />

tu remplaces la valeur de l'attribut SerieMax="R19.0" par SerieMax="R19.1".

 

Le plug-in ajoute un menu contextuel qui te permet d'aller inspercter la base de données du dessin et avec lequel il te sera facile de retrouver ton type de ligne et de savoir par quel(s) objet(s) il est référencé (ce qui fait que tu ne peux pas le purger).

 

J'ai pu noter quelques bugs sans gravité que tu peux essayer de corriger toi même puisque le code source (C#) est fourni.



Gilles Chanteau
Programmation AutoCAD LISP/.NET
GileCAD
GitHub

Message 6 sur 15
otobox
en réponse à: kwizats_haderack

Je viens de passer une demie heure à parcourir tous les styles, textes, cotes, tableaux, purger tout ce que je pouvais encore, supprimé la dernière présentation et la fenetre crée avec la présentation automatique crée après cette suppression, mais je n'arrive pas à trouver où est utilisé ce type de trait fantôme...

 

Gile, j'ai essayé l'explorateur de db que tu as donné en lien, mais ça ne fonctionne pas avec 2015 (après avoir changé le XML en 20.0, il y a un message d'erreur au démarrage d'ACAD). J'ai essayé d'ouvrir la source, mais ça dépasse de loin mes compétences 😕 Je vais essayer mardi au boulot avec 2013 et Seven car ça a l'air d'être intéressant, au moins pour comprendre comment fonctionne ACAD.

 

JM

Message 7 sur 15
_gile
en réponse à: otobox

Le type de ligne 'PHANTOM2' est utilisé par le style de vue en coupe 'Imperial24'.

Lance la commande _VIEWSECTIONSTYLE > Modifier > onglet Plan de coupe > Ligne de plan de coupe > Type de ligne.

 

 



Gilles Chanteau
Programmation AutoCAD LISP/.NET
GileCAD
GitHub

Message 8 sur 15
_gile
en réponse à: otobox

Pour MgdDbg, dans le fichier PackageContents, il y a un autre attribut SerieMax à mettre à "20.0" dans la clé RuntimeRequirements et il faut aussi ajouter l'attribut LoadOnAutoCADStartup="True" dans la clé ComponentEntry de 2013 (cet attribut etait facultatif et par défaut à True dans les versions précédentes.

Avec le code ci-dessous l'application se charge, mais je ne l'ai pas vraiment testé pour voir s'il y avait des bugs (il y a eu pas mal de changements dans l'API avec 2015).

 

<?xml version="1.0" encoding="utf-8"?>
<ApplicationPackage
  SchemaVersion="1.0"
  AutodeskProduct="AutoCAD"
  ProductType="Application"
  Name="DWG MgdDBG"
  AppVersion="1.0.0"
  Description="Debugging tools for AutoCAD - MgdDBG"
  Author="Fenton Webb"
  Icon="./Contents/Resources/resource/Inspector.jpg"
  AppNameSpace="adn.exchange.autodesk.com"
  OnlineDocumentation=" "
  HelpFile="./Contents/Resources/helpfile.html"
  ProductCode="{DB35F952-289A-4453-A46D-B424A6FCFDFB}"
  UpgradeCode="{E5B78003-2D7B-490F-B947-65D804392151}"
  SupportedLocales="Enu" >
 
  <CompanyDetails
    Name="Autodesk"
    Phone=" "
    Url=" www.autodesk.com"
    Email=" adn.autodesk.com" />
    
  <RuntimeRequirements
    OS="Win32|Win64"
    Platform="AutoCAD|AutoCAD*"
    SeriesMin="R18.2"
    SeriesMax="R20.0" />
    
  <Components Description="AutoCAD 2012">
 
    <RuntimeRequirements
      OS="Win32|Win64"
      Platform="AutoCAD*|AutoCAD"
      SeriesMin="R18.2"
      SeriesMax="R18.2" />
      
    <ComponentEntry
      AppName="DWGMgdDBG"
      Version="1.0.0"
      ModuleName="./Contents/Resources/DWGMgdDbgSource/bin/Debug2012/MgdDbg.dll"
      AppDescription="Debugging tools for AutoCAD - MgdDBG" />
      
  </Components>

  <Components Description="AutoCAD 2013">
 
    <RuntimeRequirements
      OS="Win32|Win64"
      Platform="AutoCAD*|AutoCAD"
      SeriesMin="R19.0"
      SeriesMax="R20.0" />
      
    <ComponentEntry
      AppName="DWGMgdDBG"
      Version="1.0.0"
      ModuleName="./Contents/Resources/DWGMgdDbgSource/bin/Debug2013/MgdDbg.dll"
      AppDescription="Debugging tools for AutoCAD - MgdDBG"
      LoadOnAutoCADStartup="True" />
      
  </Components>
 
</ApplicationPackage>

 



Gilles Chanteau
Programmation AutoCAD LISP/.NET
GileCAD
GitHub

Message 9 sur 15
kwizats_haderack
en réponse à: otobox

Bravo Giles,

c'était bien là que se cachait le type de ligne impossible à purger car utilisé comme je le disais plus haut.

Tu gagnes un an de souscription à la hotline "Autocad R12".

Pour une fois qu'il y avait un truc d'intéressant à chercher .....

Bonnes fêtes de Pâques.

Bien cordialement / Best regards

----------------------------------------------------

Erwan ( FRENCH AUTOCAD M.E.P CAD/BIM MANAGER )
Message 10 sur 15
otobox
en réponse à: _gile

Je n'étais pas près de trouver, faisant très peu de 3D avec ACAD,j'ignorais qu'il existait ce style de vue !!!

 

Comment avez vous trouvé d'où venait ce trait ? Gile, avec cet utilitaire ? Erwan, au hasard ? Mais tu as raison, c'était un oeuf de Pâques intéressant à rechercher ! (Tiens ! d'ailleurs, existe t-il un vrai Easter egg dans AutoCAD 2015 ? à priori, s'il y en a un il n'est pas encore découvert)

 

Maintentant que je sais d'où vient ce trait phantom, reste à savoir pourquoi il arrive là quand j'insère un bloc via une palette, alors que ce type de trait n'existe pas dans le dessin d'origine. Je vérifierai demain au boulot si ce type de vue n'est pas présent dans le dessin original.

 

Autrement, pour MgdDBG, effectivement, je n'avais pas vu le premier "SeriesMax="R19.0" à changer en "SeriesMax="R20.0". Maintenant, ça se charge sans problème avec AutoCAD, et j'ai bien MgdDBG dans le menu contextuel. Mais ça ne fonctionne pas, à chaque commande, des messages d'erreurs apparaissent.

Par exemple : Snoop entities... > la fenêtre Selected Entity apparait, avec à gauche l'élément cliqué, mais rien à droite et le message suivant : "Impossible de charger le type 'Autodesk.AutoCAD.DatabaseService.FileDependencyInfo' à partir de l'assembly 'MgdDBG, Version.... etc., Culture=neutral, PublicKey Token=null' en raison de types valeur incompatibles."

 

 

 

Petite question subsidiaire : pour faire une sorte de super purge dans un fichier AutoCAD avec .net, par exemple pour supprimer ce fameux trait Phantom2 et le changer en Continuous, quelle serait la méthode à utiliser ?

Naturellement, j'irais parcourir l'ensemble des blocs dans la base de données puis dans chaque bloc, l'ensemble des entités s'y trouvant, je vérifierais leur type de ligne et si Phantom2, alors changer en Continuous.

Je ferais de même pour chaque type de cote, chaque type de vue, chaque calque etc.

 

Mais peut être est-il possible de le faire directement en agissant sur la table des types de lignes. Si j'ai bien compris (ce qui n'est pas sûr) chaque type de ligne possède un N° unique qui identifie le type de ligne. Si en face de ce N° unique on change le nom du trait, ainsi tous les élément ayant en référence ce n° unique changeraient de type de ligne, sans devoir parcourir toute la db.

Ou mieux, si j'étais sur Access je ferais ainsi, une requête "update" dans la db pour identifier tous les éléments pointant vers cette clé pour la modifier vers la clé "Continuous".

Je ne sais pas si je suis très clair... 😕

 

Merci en tous cas pour m'avoir aidé à trouver ce mystérieux trait !

 

Jean-Marc

Message 11 sur 15
_gile
en réponse à: otobox

Salut,

 

Avec MgdDbg, c'est très facile à trouver.

Menu contextuel MgdDbg -> Snoop Database... -> onglet Symbol Tables -> déployer Linetype Table -> sélectionner PHANTOM2.

Dans la fenêtre de droite cliquer sur Referenced by.

Dans la nouvelle fenêtre qui s'ouvre, dans le noeud Hard Pointers on voit un objet SectionViewStyle.

Tu retrouves cet objet en revenant à la première fenêtre, onglet Dictionaries -> noeud ACAD_SECTIONVIEWSTYLE" -> Imperial24

 

Pour deboguer MgdDbg, le plus simple est d'ouvrir la solution (puisqu'elle est fournie) dans Visual Studio, j'essayereais de regarder quand j'aurais un peu plus de temps.

 


Pour purger ce type d'objet, il faut supprimer l'entée Imperial24 du dictionnaire ACAD_SECTIONVIEWSTYLE.

Il existe une méthode Database.Purge() qui prend comme argument une instance de ObjectIdCollection et retourne la collection après avoir supprimé tous les ObjectId des objets référencés. On peut donc supprimer (avec Erase()) sans rique tous les objets retournés par cette méthode.

 



Gilles Chanteau
Programmation AutoCAD LISP/.NET
GileCAD
GitHub

Message 12 sur 15
kwizats_haderack
en réponse à: otobox

Salut,
j'ai simplement trouvé par élimination.
Rien à purger dans les éléments standards du dessin.
Rien à purger dans les calques et entités.
Ca ne pouvait donc venir que d'un style de quelque chose qui était programmé avec ce style de ligne. J'ai donc taper "style" au clavier et Autocad m'a proposé toutes les fonctions qui gèrent des styles et je les ai testé une à une, il y en a peu, ça m'a pris 30s pour trouver.
@+
Bien cordialement / Best regards

----------------------------------------------------

Erwan ( FRENCH AUTOCAD M.E.P CAD/BIM MANAGER )
Message 13 sur 15
otobox
en réponse à: _gile

Pour purger ce type d'objet, il faut supprimer l'entée Imperial24 du dictionnaire ACAD_SECTIONVIEWSTYLE.

Il existe une méthode Database.Purge() qui prend comme argument une instance de ObjectIdCollection et retourne la collection après avoir supprimé tous les ObjectId des objets référencés. On peut donc supprimer (avec Erase()) sans rique tous les objets retournés par cette méthode.

 

OK, mais existe t-il une fonction .net qui permet de sélectionner l'ensemble des entités de la database ayant un type de trait donné en paramètre, un peu comme une requête, ou doit-on parcourir chaque bloc et chaque style du dessin et rechercher l'élément ayant comme référence le type de trait ?

Message 14 sur 15
otobox
en réponse à: kwizats_haderack

Ca ne pouvait donc venir que d'un style de quelque chose qui était programmé avec ce style de ligne. J'ai donc taper "style" au clavier et Autocad m'a proposé toutes les fonctions qui gèrent des styles et je les ai testé une à une, il y en a peu, ça m'a pris 30s pour trouver.

 

Plutôt malin, fallait y penser, j'ai pas eu le réflexe ne connaissant que les styles de traits/cotes/tableaux/textes. 🙂

Message 15 sur 15
_gile
en réponse à: otobox

Je ne connais de fonction qui fasse celà.

Il faut donc chercher dans toute la base de donnée tous les objets (entités graphiques et objets non graphiques) susceptible d'avoir ce type de ligne



Gilles Chanteau
Programmation AutoCAD LISP/.NET
GileCAD
GitHub

Vous n'avez pas trouvé ce que vous recherchiez ? Posez une question à la communauté ou partagez vos connaissances.

Publier dans les forums  

Autodesk Design & Make Report