ARKANCE - globální Platinum partner Autodesk ARKANCE | KONTAKT - CZ | SK | EN | DE
Registrujte se na 22. ročník konference CADfórum 2025 - 30.9. Zámek Valeč.
Přes 119.000 registrovaných u nás, celkem 1.097.000 registrovaných (CZ+EN), přes 53.000 CAD/BIM bloků. Vyzkoušejte nový přesný Inženýrský kalkulátor a aktualizovaný Generátor čarových kódů.
RSS kanál - CAD tipy RSS tipy
RSS diskuze

Diskuze Diskuzní fórum, poradna

?
CAD diskuze, rady, výměna zkušeností

CAD Fórum - Homepage Veřejné diskuzní fórum k CAD aplikacím - ptejte se na libovolné otázky týkající se oboru CAx, podělte se o vaše znalosti a zkušenosti s programy AutoCAD, Inventor, Revit, Fusion, 3ds Max, Vault a s dalšími CAD/BIM/PDM aplikacemi. Zaregistrujte se nebo se přihlašte a zašlete váš příspěvek do odpovídajícího fóra. Viz další informace o CAD Fóru. Nechcete se registrovat? Zeptejte se v naší Facebook poradně.
Fórum nenahrazuje technický support firmy ARKANCE (CAD Studio) - přímá podpora pro zákazníky funguje na helpdesk.arkance-systems.cz
  FAQ FAQ  Prohledat fórum   Události   Registrovat Registrovat  Přihlásit Přihlásit

Téma uzavřenoBlock za Block

 Odpovědět Odpovědět archiv
Autor
SELM Zobrazit panel
Diskutér
Diskutér

Přihlášen: 25.lis.2005
Stav: Offline
Bodů: 59
Přímý odkaz na tuto zprávu Téma: Block za Block
    Zasláno: 04.led.2007 v 16:04
Dostal jsem výkres, kde jsou stejné bloky uloženy vždy pod jiným ménem. Třeba jeden blok je tam 63x pod 63 jmény.
Jak ve VBA nahradit blok blokem.
Vím že bůžu projít všechny bloky, dokážu i jednotlivé bloky přejmenovat, potíž je v tom, že není možné přejmenovat na stéjné jméno více bloků (typů bloků) tím ho přepsat.
 
Jak na to?

Tongue
Zpět nahoru
musil Zobrazit panel
Zasloužilý člen
Zasloužilý člen

Přihlášen: 03.srp.2005
Lokalita: ČR (VY)
Používám:
Cad 2002LT EN
Stav: Offline
Bodů: 162
Přímý odkaz na tuto zprávu Zasláno: 04.led.2007 v 16:25
Zdravim selectoval bych body a posléze kopiroval jeden blok.
Ale vo VBA neporadim.
Zpět nahoru
Vladimír Michl Zobrazit panel
Moderátor
Moderátor
Avatar
ARKANCE

Přihlášen: 09.zář.2004
Lokalita: ČR (JČ)
Používám:
Implementujeme řešení Autodesk
Stav: Offline
Bodů: 21951
Přímý odkaz na tuto zprávu Zasláno: 04.led.2007 v 16:52
Přejmenovat asi ne, ale nahradit bloky můžete pomocí BLOCKREPLACE - viz:
Vladimír Michl (moderátor)
ARKANCE CZ - arkance.world
(podpora viz helpdesk.arkance-systems.cz)
Zpět nahoru
dazky Zobrazit panel
Nováček
Nováček

Přihlášen: 29.lis.2004
Stav: Offline
Bodů: 5
Přímý odkaz na tuto zprávu Zasláno: 04.led.2007 v 21:29
predpokladam, nechcete automaticky porovnavat jednotlive bloky mezi sebou, a hledat ktere jsou si podobne
a nemate problem vytvorit seznam jak jednolive bloky nahrazovat
 
ve vykrese (Model, Layouts) vyhledejte objekty BlockReference
a nahradte je dle potreby asi takto, vycistenim vykresu se pak zbavite nepotrebnych definic
 
Public Sub XXX()
Dim BlockRefObj As AcadEntity
For Each BlockRefObj In ThisDrawing.ModelSpace
    If BlockRefObj.ObjectName = "AcDbBlockReference" Then
        If BlockRefObj.Name = "63a" Then BlockRefObj.Name = "63"
        If BlockRefObj.Name = "63b" Then BlockRefObj.Name = "63"
    End If
Next
End Sub
Zpět nahoru
Chop Zobrazit panel
Diskutér
Diskutér

Přihlášen: 13.srp.2005
Lokalita: Czech Republic
Stav: Offline
Bodů: 64
Přímý odkaz na tuto zprávu Zasláno: 05.led.2007 v 06:23
Zdravím, tak s tímhle jsem se taky setkal při podkladech z DGN jsem obdržel soubor se spoustou graficky stejných bloků s názvy např. strom$1, strom$2 až strom$1536.
V tomto případě nezabere ani BLOCKREPLACE protože umožní vybrat jen jeden název bloku pro nahrazení a dělat to 1536x …
Vytvořit ručně seznam pro nahrazení tolika bloků asi taky není moc příjemné.
Takže tady je makro pro nahrazení mnoha různých bloků blokem jedním.
Není úplně ošetřeno na chyby a tak postupujte takto:
1. spusťte makro
2. při běhu na obrazovce vyberte bloky, které chcete nahradit (výběr ukončete enter nebo PTM)
3. vyberte blok, kterým chcete vybrané bloky nahradit 
 
Sub Blok2Bloky()
'provede nahrazení vybraných bloků novým blokem
Dim vybránblok As Boolean
Dim aktivobj As AcadEntity
Dim blok2 As AcadEntity
Dim Vklbod(0 To 2) As Double
Dim pomset As AcadSelectionSet
Dim aktset As AcadSelectionSet
Dim bodík As Variant
For Each pomset In ThisDrawing.SelectionSets
    If pomset.Name = "ss1" Then
        pomset.Delete 'čistě pro jistotu, pokud po nějakém zhroucení ještě výběr ss1 existuje
        Exit For
    End If
Next pomset
    Set pomset = ThisDrawing.SelectionSets.Add("ss1") 'čistý výběr
    ThisDrawing.Utility.Prompt "Vyberte bloky pro nahrazení"
    Dim intType(0) As Integer
    Dim varData(0) As Variant
    intType(0) = 0
    varData(0) = "INSERT"
   
    pomset.SelectOnScreen intType, varData
    ThisDrawing.Utility.Prompt ""
   
    vybránblok = False
    Do Until vybránblok
        ThisDrawing.Utility.GetEntity blok2, bodík, "Vyberte blok pro nahrazení vybraných bloků. Blok nesmí být součástí výběru pro nahrazení."
        If StrComp(blok2.ObjectName, "AcDbBlockReference", vbTextCompare) = 0 Then
            vybránblok = True
        Else
            MsgBox "Vybraný objekt není blok! Zkuste výběr znovu", vbOKOnly
            vybránblok = False
        End If
    Loop
For Each aktivobj In pomset
    On Error Resume Next 
    Select Case aktivobj.ObjectName
    Case "AcDbBlockReference"
      Dim br1 As AcadBlockReference
      Dim Novyblk As AcadBlockReference
      Set br1 = aktivobj
      Set Novyblk = ThisDrawing.ModelSpace.InsertBlock(br1.InsertionPoint, blok2.Name, 1, 1, 1, br1.Rotation) 'na původní pozici a se stejnou rotací vloží nový blok
      br1.Delete 'po nahrazení bloku smazat původní blok
    End Select
Next aktivobj
ThisDrawing.SelectionSets("ss1").Delete
End Sub
 


Upravil Chop - 05.led.2007 v 06:36
Civil 2007
Zpět nahoru
Vladimír Michl Zobrazit panel
Moderátor
Moderátor
Avatar
ARKANCE

Přihlášen: 09.zář.2004
Lokalita: ČR (JČ)
Používám:
Implementujeme řešení Autodesk
Stav: Offline
Bodů: 21951
Přímý odkaz na tuto zprávu Zasláno: 05.led.2007 v 08:43
To je určitě užitečná funkce - jen pozor, neřeší řadu speciálních případů, ke kterým může běžně dojít (zamčené hladiny, vnořené bloky, atd.). Ty jsou právě ošetřeny v BLOCKREPLACE - ten lze spustit i řádkově (-BLOCKREPLACE) a také vybírat bloky ukázáním nebo jej zavolat ve smyčce se seznamem bloků.
Vladimír Michl (moderátor)
ARKANCE CZ - arkance.world
(podpora viz helpdesk.arkance-systems.cz)
Zpět nahoru
topocad Zobrazit panel
Zasloužilý člen
Zasloužilý člen

Přihlášen: 01.říj.2004
Lokalita: Czech Republic
Používám:
AutoCAD/Civil3D 2007-23
Stav: Offline
Bodů: 113
Přímý odkaz na tuto zprávu Zasláno: 22.úno.2007 v 10:45
jak udělat seznam, resp. smyčku pro seznam více bloků pro nahrazení jedním blokem
Máme převedené DGN a v něm blok 6.702 a jeho "klony" 6.702_10, ...202 atd. Abychom nemuseli nahrazovat blok po bloku
Zpět nahoru

Pro technickou podporu CAD
kontaktujte Helpdesk

Příbuzné CAD tipy:
Tip 8058:Možnost ztráty dat při ukládání DWG z Editoru bloků.
Tip 606:VIPChyba - Invalid Block Name "" (neplatný název bloku "")
Tip 6738:VIPTrik: Jak zobrazit tooltipech a výkazech jméno i popis bloku?
Tip 171:drawing attached as XREF causes crash after change of color of one layer
Tip 12869:VIPTvorba knihovny pro vkládání bloků v AutoCAD web app
Tip 475:Chyba: 'Fatal Error: Unhandled Access Violation Reading 0x...... Exception at 5f41fe41h'


 Odpovědět Odpovědět

Přejít na fórum Oprávnění fóra Zobrazit panel



Stránka byla vygenerována za 0,208 sekund.