Beste mede CAD-gebruikers,
Nadat wij een tekening van VBI vloeren hebben ingeladen zitten we met een mysterie.
In onze dwg zijn vijf lagen toegevoegd welke we op geen enkele wijze kunnen herleiden / purgen.
We hebben de gehele inhoud van de tekening inclusief layouts, blocks, views enz. verwijderd en gepurged. Toch blijven er 5 lagen over welke we niet kunnen purgen.
Kan iemand ons vertellen waar deze lagen verstopt zitten in de tekening? Wij zijn van mening de tekening volledig schoon te hebben maar toch blijven deze 5 lagen over na het uitvoeren van het purge commando!?
Zie bijlage voor de betreffende dwg.
Met vriendelijke groet AdenRob
PS: we weten dat we de lagen wel kunnen verwijderen met LAYDEL. Maar we zijn benieuwd waar deze lagen nog in gebruik zijn!
Maak een nieuw laag: Layer1
type het commando "LAYMRG"
Selecteer de lagen die je weg wilt hebben uit de lijst (optie: [Name])
Dan een enter en selecteer de doel laag, in mijn voorbeeld "Layer1"
Geef een enter.
Zie voobeeld hieronder:
CiteerCommand: LAYMRG
Select object on layer to merge or [Name]: n
Selected layers: A-Wall-Abov,A-Wall-Blow,A-Wall-Comp,A-Wall-Patt,OVBI-Niet plotten.
Select object on layer to merge or [Name/Undo]:
Select object on target layer or [Name]: n
Deleting layer "A-Wall-Abov".
Deleting layer "A-Wall-Blow".
Deleting layer "A-Wall-Comp".
Deleting layer "A-Wall-Patt".
Deleting layer "OVBI-Niet plotten".
5 layers deleted.
Command:
Is wat lastig maar het gaat wel!
Misschien iets voor SuperPurge?
http://www.manusoft.com/software/superpurge.html
Beste Eddy,
Onze vraag was niet hoe we de lagen weg kunnen krijgen, maar..... waar komen deze lagen vandaan?!
De lagen zijn namelijk niet leeg, anders konden we hem purgen. Ergens zit dus nog iets verstopt.
Onze vraag is dan ook.... WAT en WAAR zit dit verstopt???
De lagen zijn echt wel leeg, anders kun je niet de laag "Layer1" uit mijn voorbeeld purgen!
Met laydel verwijder je een laag EN de objecten op die laag!!!
Als ik jou tekening als block insert komen die lagen ook mee.
En als ik dat het block verwijder dan blijven de lagen er instaan ook na purgen.
Ik ben dit eerder tegen gekomen en weet ook niet hoe dit kan.
Eigenlijk wil ik dat ook graag weten zodat we er gebruik van kunnen maken in onze template.
Hallo Eddy en overigen die geïnteresseerd zijn in dit lagen mysterie...
Wij en jij Eddy zien iets over het hoofd, maar wat... :vraagteken:
De lagen zijn niet leeg, anders zouden we deze kunnen purgen...
De tekening van VBI die dit heeft veroorzaakt werd 2D aangeleverd, maar bleek '2,5D' te zijn.
(ze hadden er wat 3D objecten inzitten)
Maar ook na een 3D studie, kunnen wij het euvel (nog) niet ontdekken.
Wie heeft er enig idee... :idea:
Groeten AdenRob
Het eerste wat mij opvalt als ik de tekening open, is de melding in de rechteronderhoek (AutoCAD 2014)
Daar vind je een melding over Missing standard file(s).
Waarschijnlijk komen deze lagen uit die standard en wordt er een link in autocad opgenomen met een verwijzing naar deze lagen.
Waar en hoe? Dat weet ik nu ook nog even niet.
Goed gezien Hulpje :vreegoe:
Maar dit is het probleem niet, dit is een van onze eigen dws file's.
Ik heb deze verwijderd uit de bijgevoegde dwg en (nieuwe dwg) geuploaded,
zodat jullie deze melding niet meer krijgen.
Wie heeft er suggesties...
Groeten AdenRob
Citaat van: AdenRob op do 15 08 2013, 11:02:28
...
De lagen zijn niet leeg, anders zouden we deze kunnen purgen...
...
Groeten AdenRob
Ik heb even gekeken met vba en de lagen staan als "USED = True"
Maar ze zijn weldegelijk leeg!
Hoe kan het anders dat als je met "wblock -> Entire drawing" een lege dwg krijgt?
Nee deze lagen zijn echt helemaal leeg!
Er is iets anders mee.
Beste Eddy,
Wellicht dat wij de term 'leeg' anders intepreteren... :nigoe:
Wie heeft er een idee :vraagteken:
Groeten AdenRob
SuperPurge Log Drawing: 2013+08+15+hardnekkige+lagen+van+VBI[1].dwg
~~~~~~~~~~~~~~~~~~ User: be
------------------------------------------------------------
Blocks: <None>
Layers: [7]
A-Wall-Abov
A-Wall-Blow
A-Wall-Comp
A-Wall-Patt
Defpoints
MX-T0-MAATLIJN
OVBI-Niet plotten
Linetypes: [1]
HIDDEN
Text Styles: <None>
Viewports: <None>
App IDs: [8]
ACAD_MLEADERVER
ACAD_NAV_VCDISPLAY
ACAD_PSEXT
AcAecLayerStandard
AcLayerTools
AECB_HALOED_LINE_OUTLINE_EDGE_LIMIT
AECB_OSNAP_MEP
DCO15
Named Views: <None>
UCS: <None>
Dimension Styles: <None>
Groups: <None>
Multiline Styles: <None>
Shape Files: <None>
Layouts: <None>
Plot Styles: <None>
Dictionary Entries: [37]
ACAD_BACKGROUND
ACAD_CIP_PREVIOUS_PRODUCT_INFO
ACAD_COLOR
ACAD_DETAILVIEWSTYLE
ACAD_DWFDEFINITIONS
ACAD_FIELDLIST
ACAD_IMAGE_DICT
ACAD_IMAGE_VARS
ACAD_MATERIAL
ACAD_MLEADERSTYLE
ACAD_PDFDEFINITIONS
ACAD_PLOTSETTINGS
ACAD_SCALELIST
ACAD_SECTIONVIEWSTYLE
ACAD_TABLESTYLE
ACAD_VISUALSTYLE
ACAD_WIPEOUT_VARS
AcAec
AcDbVariableDictionary
AcStPlugin
AcStStandard
AEC_CLEANUP_GROUP_DEFS
AEC_DISP_REP_CONFIGURATIONS
AEC_DISP_REP_SETS
AEC_DISP_REPS
AEC_DISPLAY_PROPS_DEFAULTS
AEC_ENDCAP_STYLES
AEC_ISOLATED_OBJECTS
AEC_MATERIAL_DEFS
AEC_OPENING_ENDCAP_STYLES
AEC_PROPERTY_FORMAT_DEFS
AEC_PROPERTY_SET_DEFS
AEC_VARS
AEC_WALL_STYLES
AECB_VOLTAGEDEFINITIONS
ASE_INDEX_DICTIONARY
BNS_VARIABLES
Drawing Entities: [434]
AcDbColor (25)
AcDbDictionaryVar (18)
AcDbMLeaderStyle
AcDbPlotSettings (25)
AcDbScale (3)
AcDbTableStyle
AcDbViewport
AcDbVXTableRecord
AcDbXrecord (16)
AcDbZombieObject (343)
SuperPurge: Purged 487 objects.
Ik vermoed dat er sprake is van 'hard-pointers' voor deze lagen.
Zie:
http://www.theswamp.org/index.php?topic=43981
Ik heb overigens niet kunnen vinden waar deze 'hard-pointers' in de tekening te vinden zijn.
Een voorbeeld hoe je lagen 'unpurgable' kunt maken:
; (LayerPurgePrevention "OnsBedrijfLayerPurgePrevention" '("NewLayer1" "NewLayer2" "BestaatNiet"))
(defun LayerPurgePrevention (dictName layerNameList / layerEnameList)
(dictremove (namedobjdict) dictName)
(if
(setq layerEnameList
(vl-remove
nil
(mapcar
(lambda (layerName) (tblobjname "layer" layerName))
layerNameList
)
)
)
(dictadd
(namedobjdict)
dictName
(entmakex
(vl-list*
'(0 . "XRECORD")
'(100 . "AcDbXrecord")
(mapcar
'(lambda (layerEname) (cons 340 layerEname))
layerEnameList
)
)
)
)
)
)
@Bart;
Als we het goed begrijpen dan kan er dus nog veel meer gepurged worden dan dat wordt gedaan met "purge" en "-purge"?
Zijn de App IDs, Dictionary Entries en de Drawing Entities (zoals omschreven in je log bestand) de boosdoener van dit probleem? Met andere woorden, als deze bestanden gepurged worden met behulp van "superpurge", kunnen dan daarna de lagen verwijderd worden d.m.v. het AutoCAD commando "purge"???
Wij zijn niet in het bezit van het programma "superpurge". Op internet krijgen we dit programma wel gevonden maar helaas is het niet gratis. Dus we kunnen dit niet zelf testen :(
@Roy_043;
Hard-pointers zegt ons niet zo veel. Als jij ze al niet gevonden krijgt dan zal het voor ons helemaal lastig worden :wink:
Je "unpurgable" lisp is misschien wel interessant voor ons. We krijgen deze alleen niet werkend :auw:
Waar kunnen we de lagen instellen welke niet gepurged mogen worden? En zijn deze lagen dan vervolgens ook niet verwijderbaar met "laydel"?
Citaat van: AdenRob op vr 16 08 2013, 11:32:27
Waar kunnen we de lagen instellen welke niet gepurged mogen worden?
De eerste regel van het code-blok geeft een voorbeeld van hoe (LayerPurgePrevention) gebruikt moet worden. De argumenten hebben trouwens ook redelijk logische namen (dictName en layerNameList).
In BricsCAD zijn de lagen niet te 'deleten'. BricsCAD heeft geen LAYDEL commando maar wel een 'delete' knop in the layer dialog.
Ik heb het logje geplaast op te laten zien wat superpurge nog in de tekening vind.
Persoonlijk zie ik geen verdachte zaken en het lijkt er op dat je het in roy zijn richting moet zoeken
Superpurge kan je wel zelf testen
deze software is tegenwoordig shareware
je kunt het 30 dagen volledig gebruiken op proef
Citaat van: roy_043 op do 15 08 2013, 15:26:23
Een voorbeeld hoe je lagen 'unpurgable' kunt maken:
; (LayerPurgePrevention "OnsBedrijfLayerPurgePrevention" '("NewLayer1" "NewLayer2" "BestaatNiet"))
(defun LayerPurgePrevention (dictName layerNameList / layerEnameList)
(dictremove (namedobjdict) dictName)
(if
(setq layerEnameList
(vl-remove
nil
(mapcar
(lambda (layerName) (tblobjname "layer" layerName))
layerNameList
)
)
)
(dictadd
(namedobjdict)
dictName
(entmakex
(vl-list*
'(0 . "XRECORD")
'(100 . "AcDbXrecord")
(mapcar
'(lambda (layerEname) (cons 340 layerEname))
layerEnameList
)
)
)
)
)
)
Bij mij loopt de code vast op:
(lambda (layerName) (tblobjname "layer" layerName))
Geprobeerd met en zonder nieuwe layers, met acad 2013.
Wat zou dat kunnen zijn?
Oops :oops:
Het moet zijn:
'(lambda (layerName) (tblobjname "layer" layerName))
Met quote dus.
Citaat van: roy_043 op ma 19 08 2013, 15:32:36
Oops :oops:
Het moet zijn:
'(lambda (layerName) (tblobjname "layer" layerName))
Met quote dus.
Bedankt hem 'm gefixed, en het werkt.
De layers zijn inderdaad nog in gebruik; namelijk in een style.
Ik heb de dwg even open gedaan in AutoCAD Architecture; waar er inderdaad nog een user-defined wall-style stond, met de betreffende layers in gebruik.. (zie printscreen in bijlage)
Ook al wordt deze wall-style niet gebruikt, hij bestaat wel. (net zoals een dimension style een layer kan bevatten)
de gewone autocad purge werkt niet op architectural objects...
je moet dit in de stylemanager zelf doen, waarna je de layers perfect kan purgen met de gewone purge (zie bijlage)
mvg,
Jo.
@ jo-king:
Bedankt voor je reactie! :vreegoe: Dit is wat we zochten!
Jammer dat AutoCAD niet voorziet in het purgen van deze objecten... Misschien (weer) iets voor op de wishlist. Gelukkig kunnen we de lagen en de inhoud van de lagen verwijderen met het commando LAYDEL. Op deze manier worden dan hopelijk de wall-styles verwijderd? Echter kunnen we dit niet checken aangezien we niet in het bezit zijn van AutoCAD architecture noch SUPERPURGE. In de bijlage de tekening met de inmiddels verwijderde lagen d.m.v. het commando LAYDEL. Zou je misschien nog even voor ons willen controleren of de wall-styles nu uit de tekening zijn verwijderd? :roll:
@ Bart/Eddy:
Helaas krijgen we de lisp nog (steeds) niet werkend... Kan één van jullie ons misschien uitleggen op welke regel we de laagnamen op moeten geven. Of misschien dat jullie ons een kopie van jullie LISP willen sturen. Dan kunnen we zelf uitzoeken wat we verkeerd doen.
Met vriendelijke groet,
AdenRob
Ik heb de nieuwe tekening even open gedaan & mijn vermoedens werden hierbij bevestigd...
De layers zijn er wel uit, maar de style blijft bestaan.
De verwijderde layers worden in de style blanco...
zie bijlage
Normaal kan je reseller je hierbij wel helpen
of misschien kan je AutoCAD Architecture als trial installeren?
groetjes,
Jo.
Citaat van: jo-king op wo 21 08 2013, 16:22:11
Ik heb de nieuwe tekening even open gedaan & mijn vermoedens werden hierbij bevestigd...
De layers zijn er wel uit, maar de style blijft bestaan.
De verwijderde layers worden in de style blanco...
zie bijlage
Normaal kan je reseller je hierbij wel helpen
of misschien kan je AutoCAD Architecture als trial installeren?
groetjes,
Jo.
Werkt het ook niet met "wblock -> Entire drawing"?
Citaat van: AdenRob op wo 21 08 2013, 15:49:50
...
@ Bart/Eddy:
Helaas krijgen we de lisp nog (steeds) niet werkend... Kan één van jullie ons misschien uitleggen op welke regel we de laagnamen op moeten geven. Of misschien dat jullie ons een kopie van jullie LISP willen sturen. Dan kunnen we zelf uitzoeken wat we verkeerd doen.
Met vriendelijke groet,
AdenRob
Dit is e lisp:
; (LayerPurgePrevention "OnsBedrijfLayerPurgePrevention" '("NewLayer1" "NewLayer2" "BestaatNiet"))
(defun LayerPurgePrevention (dictName layerNameList / layerEnameList)
(dictremove (namedobjdict) dictName)
(if
(setq layerEnameList
(vl-remove
nil
(mapcar
'(lambda (layerName) (tblobjname "layer" layerName))
layerNameList
)
)
)
(dictadd
(namedobjdict)
dictName
(entmakex
(vl-list*
'(0 . "XRECORD")
'(100 . "AcDbXrecord")
(mapcar
'(lambda (layerEname) (cons 340 layerEname))
layerEnameList
)
)
)
)
)
)
Deze werkt door deze regel op de commandoregel in te typen:
(LayerPurgePrevention "OnsBedrijfLayerPurgePrevention" '("NewLayer1" "NewLayer2" "BestaatNiet"))
De namen van de layers zijn dan: "NewLayer1", "NewLayer2" en "BestaatNiet".
Hier kun je je eigen layers opgeven
als je met superpurg AEC_WALL_STYLES verwijderd (in de hard mode)
Kan je vervolgens met de gewone purge de lagen verwijderen
@ Roy_043:
Allereerst onze hartelijk dank voor je lisp :vreegoe:
@ jo-king:
Bedankt voor het testen! We zijn door dit topic veel wijzer geworden wat betreft het opschonen van een tekening. Een trail versie downloaden zou voor de korte termijn een goede oplossing kunnen zijn, echter wie weet welke andere CAD-applicaties nog meer een dwg kunnen vervuilen... Wellicht is het kopen van het programma superpurge een duurzamere oplossing ofwel wachten tot AutoCAD de purge functie uitbreid.
@EddyBeerke:
Bedankt voor je uitleg! Nu krijgen wij de lisp ook werkend.
Een Wblock maken hebben we nog niet getest. Dit zullen we binnenkort even doen.
@Bart:
Ook jij bedankt voor je reactie. We zullen binnenkort (in een rustigere periode) de trail versie van superpurge eens downloaden.