Ik ben in autocad een dingetje aan het maken dat er wanneer een revisie balk in de tekening word gevoegd, in de onderhoek bij versie het bijbehorende nr. wordt ingevuld. Dit omdat er weleens een revisie word gemaakt, maar vergeten word om het versie nr. te wijzigen.
Dit heb ik als code:
Eerst gaat hij hier kijken of er een revisie balk word ingevoegd, als dat zo is dan pakt hij bij revisie balk (hebben allemaal een oplopende naam) het nr erbij. Tweede gedeelte schrijft hij dat nr. in de onderhoek.
Dit gaat allemaal heel mooi en werkt ook. maar tussendoor krijg ik de error:
(Rare error vind ik eigenlijks, tuurlijk moet het object toch open zijn om naar te schrijven)
Als ik deze error wegklik, doet hij precies wat ik wil.
Nu heb ik op Google lopen zoeken, en daar kom ik precies 1 zelfde probleem tegen, alleen ik snap niet wat ik nu precies moet doen hiermee.
De iterator object moet naar Nothing gezet worden???
Dit heb ik als code:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
| Private Sub AcadDocument_ObjectAdded(ByVal Object As Object) Dim Attributen Dim element Dim attribuut Dim Symbool Dim CountWijziging For Each element In ThisDrawing.PaperSpace If element.ObjectName = "AcDbBlockReference" Then Set Symbool = element If Symbool.HasAttributes Then Attributen = Symbool.GetAttributes For i = LBound(Attributen) To UBound(Attributen) Set attribuut = Attributen(i) If attribuut.TagString = "WIJZ01" Then CountWijziging = "01" End If Next i End If End If Next element For Each element In ThisDrawing.PaperSpace If element.ObjectName = "AcDbBlockReference" Then Set Symbool = element If Symbool.HasAttributes Then Attributen = Symbool.GetAttributes For i = LBound(Attributen) To UBound(Attributen) Set attribuut = Attributen(i) If attribuut.TagString = "VERSIE" Then attribuut.TextString = CountWijziging End If Next i End If End If Next element End Sub |
Eerst gaat hij hier kijken of er een revisie balk word ingevoegd, als dat zo is dan pakt hij bij revisie balk (hebben allemaal een oplopende naam) het nr erbij. Tweede gedeelte schrijft hij dat nr. in de onderhoek.
Dit gaat allemaal heel mooi en werkt ook. maar tussendoor krijg ik de error:
code:
1
| Object was open for write |
(Rare error vind ik eigenlijks, tuurlijk moet het object toch open zijn om naar te schrijven)
Als ik deze error wegklik, doet hij precies wat ik wil.
Nu heb ik op Google lopen zoeken, en daar kom ik precies 1 zelfde probleem tegen, alleen ik snap niet wat ik nu precies moet doen hiermee.
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| Set RecordIterator = ODT.GetODRecords RecordIterator.init acadobj, False, False If RecordIterator.IsDone Then Exit Sub Do Until RecordIterator.IsDone Set ODR = RecordIterator.Record counter = 0 For Each CurTable In ODT.ODFieldDefs Set CurRecord = ODR.Item(counter) If LCase(CurTable.name) = "foo" Then msgbox CurRecord.Value counter = counter + 1 Next RecordIterator.Next Loop Set RecordIterator = Nothing 'release the RecordIterator lock on objects |
De iterator object moet naar Nothing gezet worden???
[ Voor 0% gewijzigd door een moderator op 08-09-2008 11:01 . Reden: Code even ingesprongen... ]