Fout in Sub van autocad

Status
Niet open voor verdere reacties.

Thomy

Gebruiker
Lid geworden
5 mrt 2009
Berichten
29
hallo

ik ben bezig om mijn programma in apparte sub's te zetten, lukkte tot ik op een probleem stuide. Het probleem is dat hij dit programma overloopt tot hij aan het deel komt van call....(subtract,..) om te subtracten. als hij hierop komt dan verspringt hij helemaal naar het einde van mijn programma. progamma staat hieronder zal in het rood markereen waar hij verspringt.

Mvg

thomy

Code:
Sub Tussenregel3(Horaantal3, punt, BrStijlen, Afstand1, BrTussenstijlen, Afstand2, BrOnderregel, Afstand16, BrTussenregel, Dikte, Tussenregel, KopieTussenstijl, KopieRechterstijl, Afstand17, Afstand18, Afstand19)

'ReDim KopieTussenstijl(0 To 2) As Acad3DSolid

    For I = 1 To Horaantal3

'        If I = 1 Then
'        End If

        If I = 2 Then

            Call LijnTussenstijl(punt(0) + BrStijlen + Afstand1 + BrTussenstijlen + Afstand2 + BrTussenstijlen / 2, punt(1), punt(2) + BrOnderregel + Afstand16 + 1.3, punt(0) + BrStijlen + Afstand1 + BrTussenstijlen + Afstand2 + BrTussenstijlen / 2, punt(1), punt(2) + BrOnderregel + Afstand16 + BrTussenregel - 1.3)
            Call LijnTussenstijl(punt(0) + BrStijlen + Afstand1 + BrTussenstijlen + Afstand2 + BrTussenstijlen / 2, punt(1), punt(2) + BrOnderregel + Afstand16 + BrTussenregel - 1.3, punt(0) + BrStijlen + Afstand1 + BrTussenstijlen + Afstand2 + BrTussenstijlen / 2, punt(1) + 0.2, punt(2) + BrOnderregel + Afstand16 + BrTussenregel - 1.3)
            Call LijnTussenstijl(punt(0) + BrStijlen + Afstand1 + BrTussenstijlen + Afstand2 + BrTussenstijlen / 2, punt(1) + 0.2, punt(2) + BrOnderregel + Afstand16 + BrTussenregel - 1.3, punt(0) + BrStijlen + Afstand1 + BrTussenstijlen + Afstand2 + BrTussenstijlen / 2, punt(1) + 0.2, punt(2) + BrOnderregel + Afstand16 + BrTussenregel - 1.1)
            Call LijnTussenstijl(punt(0) + BrStijlen + Afstand1 + BrTussenstijlen + Afstand2 + BrTussenstijlen / 2, punt(1) + 0.2, punt(2) + BrOnderregel + Afstand16 + BrTussenregel - 1.1, punt(0) + BrStijlen + Afstand1 + BrTussenstijlen + Afstand2 + BrTussenstijlen / 2, punt(1) + 1.2, punt(2) + BrOnderregel + Afstand16 + BrTussenregel - 0.2)
            Call LijnTussenstijl(punt(0) + BrStijlen + Afstand1 + BrTussenstijlen + Afstand2 + BrTussenstijlen / 2, punt(1) + 1.2, punt(2) + BrOnderregel + Afstand16 + BrTussenregel - 0.2, punt(0) + BrStijlen + Afstand1 + BrTussenstijlen + Afstand2 + BrTussenstijlen / 2, punt(1) + 1.2, punt(2) + BrOnderregel + Afstand16 + BrTussenregel)
            Call LijnTussenstijl(punt(0) + BrStijlen + Afstand1 + BrTussenstijlen + Afstand2 + BrTussenstijlen / 2, punt(1) + 1.2, punt(2) + BrOnderregel + Afstand16 + BrTussenregel, punt(0) + BrStijlen + Afstand1 + BrTussenstijlen + Afstand2 + BrTussenstijlen / 2, punt(1) + 1.4, punt(2) + BrOnderregel + Afstand16 + BrTussenregel)
            Call LijnTussenstijl(punt(0) + BrStijlen + Afstand1 + BrTussenstijlen + Afstand2 + BrTussenstijlen / 2, punt(1) + 1.4, punt(2) + BrOnderregel + Afstand16 + BrTussenregel, punt(0) + BrStijlen + Afstand1 + BrTussenstijlen + Afstand2 + BrTussenstijlen / 2, punt(1) + 1.4, punt(2) + BrOnderregel + Afstand16 + BrTussenregel - 1.3)
            Call LijnTussenstijl(punt(0) + BrStijlen + Afstand1 + BrTussenstijlen + Afstand2 + BrTussenstijlen / 2, punt(1) + 1.4, punt(2) + BrOnderregel + Afstand16 + BrTussenregel - 1.3, punt(0) + BrStijlen + Afstand1 + BrTussenstijlen + Afstand2 + BrTussenstijlen / 2, punt(1) + 1.9, punt(2) + BrOnderregel + Afstand16 + BrTussenregel - 1.3)
            Call LijnTussenstijl(punt(0) + BrStijlen + Afstand1 + BrTussenstijlen + Afstand2 + BrTussenstijlen / 2, punt(1) + 1.9, punt(2) + BrOnderregel + Afstand16 + BrTussenregel - 1.3, punt(0) + BrStijlen + Afstand1 + BrTussenstijlen + Afstand2 + BrTussenstijlen / 2, punt(1) + 1.9, punt(2) + BrOnderregel + Afstand16 + BrTussenregel)
            Call LijnTussenstijl(punt(0) + BrStijlen + Afstand1 + BrTussenstijlen + Afstand2 + BrTussenstijlen / 2, punt(1) + 1.9, punt(2) + BrOnderregel + Afstand16 + BrTussenregel, punt(0) + BrStijlen + Afstand1 + BrTussenstijlen + Afstand2 + BrTussenstijlen / 2, punt(1) + Dikte, punt(2) + BrOnderregel + Afstand16 + BrTussenregel)
            Call LijnTussenstijl(punt(0) + BrStijlen + Afstand1 + BrTussenstijlen + Afstand2 + BrTussenstijlen / 2, punt(1) + Dikte, punt(2) + BrOnderregel + Afstand16, punt(0) + BrStijlen + Afstand1 + BrTussenstijlen + Afstand2 + BrTussenstijlen / 2, punt(1) + Dikte, punt(2) + BrOnderregel + Afstand16 + BrTussenregel)
            Call LijnTussenstijl(punt(0) + BrStijlen + Afstand1 + BrTussenstijlen + Afstand2 + BrTussenstijlen / 2, punt(1) + Dikte, punt(2) + BrOnderregel + Afstand16, punt(0) + BrStijlen + Afstand1 + BrTussenstijlen + Afstand2 + BrTussenstijlen / 2, punt(1) + 1.9, punt(2) + BrOnderregel + Afstand16)
            Call LijnTussenstijl(punt(0) + BrStijlen + Afstand1 + BrTussenstijlen + Afstand2 + BrTussenstijlen / 2, punt(1) + 1.9, punt(2) + BrOnderregel + Afstand16, punt(0) + BrStijlen + Afstand1 + BrTussenstijlen + Afstand2 + BrTussenstijlen / 2, punt(1) + 1.9, punt(2) + BrOnderregel + Afstand16 + 1.3)
            Call LijnTussenstijl(punt(0) + BrStijlen + Afstand1 + BrTussenstijlen + Afstand2 + BrTussenstijlen / 2, punt(1) + 1.9, punt(2) + BrOnderregel + Afstand16 + 1.3, punt(0) + BrStijlen + Afstand1 + BrTussenstijlen + Afstand2 + BrTussenstijlen / 2, punt(1) + 1.4, punt(2) + BrOnderregel + Afstand16 + 1.3)
            Call LijnTussenstijl(punt(0) + BrStijlen + Afstand1 + BrTussenstijlen + Afstand2 + BrTussenstijlen / 2, punt(1) + 1.4, punt(2) + BrOnderregel + Afstand16 + 1.3, punt(0) + BrStijlen + Afstand1 + BrTussenstijlen + Afstand2 + BrTussenstijlen / 2, punt(1) + 1.4, punt(2) + BrOnderregel + Afstand16)
            Call LijnTussenstijl(punt(0) + BrStijlen + Afstand1 + BrTussenstijlen + Afstand2 + BrTussenstijlen / 2, punt(1) + 1.4, punt(2) + BrOnderregel + Afstand16, punt(0) + BrStijlen + Afstand1 + BrTussenstijlen + Afstand2 + BrTussenstijlen / 2, punt(1) + 1.2, punt(2) + BrOnderregel + Afstand16)
            Call LijnTussenstijl(punt(0) + BrStijlen + Afstand1 + BrTussenstijlen + Afstand2 + BrTussenstijlen / 2, punt(1) + 1.2, punt(2) + BrOnderregel + Afstand16, punt(0) + BrStijlen + Afstand1 + BrTussenstijlen + Afstand2 + BrTussenstijlen / 2, punt(1) + 1.2, punt(2) + BrOnderregel + Afstand16 + 0.2)
            Call LijnTussenstijl(punt(0) + BrStijlen + Afstand1 + BrTussenstijlen + Afstand2 + BrTussenstijlen / 2, punt(1) + 1.2, punt(2) + BrOnderregel + Afstand16 + 0.2, punt(0) + BrStijlen + Afstand1 + BrTussenstijlen + Afstand2 + BrTussenstijlen / 2, punt(1) + 0.2, punt(2) + BrOnderregel + Afstand16 + 1.1)
            Call LijnTussenstijl(punt(0) + BrStijlen + Afstand1 + BrTussenstijlen + Afstand2 + BrTussenstijlen / 2, punt(1) + 0.2, punt(2) + BrOnderregel + Afstand16 + 1.1, punt(0) + BrStijlen + Afstand1 + BrTussenstijlen + Afstand2 + BrTussenstijlen / 2, punt(1) + 0.2, punt(2) + BrOnderregel + Afstand16 + 1.3)
            Call LijnTussenstijl(punt(0) + BrStijlen + Afstand1 + BrTussenstijlen + Afstand2 + BrTussenstijlen / 2, punt(1) + 0.2, punt(2) + BrOnderregel + Afstand16 + 1.3, punt(0) + BrStijlen + Afstand1 + BrTussenstijlen + Afstand2 + BrTussenstijlen / 2, punt(1), punt(2) + BrOnderregel + Afstand16 + 1.3)

            'maakt een regioon vand e getekende lijnen
            Regions = ThisDrawing.ModelSpace.AddRegion(RegionTussenregel)
            Set Reg = Regions(0)

            'extrudeerd de region
            Set Tussenregel(0) = ThisDrawing.ModelSpace.AddExtrudedSolid(Regions(0), Afstand3 + BrTussenstijlen, 0)

            'verwijderd de region
            Reg.Delete

            'substraxt de stijlen van de tussenregels

            [COLOR="Red"]Call Tussenregel(0).Boolean(acSubtraction, KopieTussenstijl(1))
            Call Tussenregel(0).Boolean(acSubtraction, KopieTussenstijl(2))
            Call Tussenregel(0).Boolean(acSubtraction, KopieRechterstijl(0))[/COLOR]

        End If

        If I = 3 Then

            'spiegelpnt voor de tussenregels.
            SpiegelPnt1(0) = punt(0)
            SpiegelPnt1(1) = punt(1)
            SpiegelPnt1(2) = punt(2) + BrOnderregel + Afstand16 + BrTussenregel + Afstand17 / 2

            SpiegelPnt2(0) = punt(0) + Breedte
            SpiegelPnt2(1) = punt(1)
            SpiegelPnt2(2) = punt(2) + BrOnderregel + Afstand16 + BrTussenregel + Afstand17 / 2

            SpiegelPnt3(0) = punt(0)
            SpiegelPnt3(1) = punt(1) + Dikte
            SpiegelPnt3(2) = punt(2) + BrOnderregel + Afstand16 + BrTussenregel + Afstand17 / 2

            Set Tussenregel(1) = Tussenregel(0).Mirror3D(SpiegelPnt1, SpiegelPnt2, SpiegelPnt3)

        End If

        If I = 4 Then

            SpiegelPnt1(0) = punt(0)
            SpiegelPnt1(1) = punt(1)
            SpiegelPnt1(2) = punt(2) + BrOnderregel + Afstand16 + BrTussenregel + Afstand17 + BrTussenregel + Afstand18 / 2

            SpiegelPnt2(0) = punt(0) + Breedte
            SpiegelPnt2(1) = punt(1)
            SpiegelPnt2(2) = punt(2) + BrOnderregel + Afstand16 + BrTussenregel + Afstand17 + BrTussenregel + Afstand18 / 2

            SpiegelPnt3(0) = punt(0)
            SpiegelPnt3(1) = punt(1) + Dikte
            SpiegelPnt3(2) = punt(2) + BrOnderregel + Afstand16 + BrTussenregel + Afstand17 + BrTussenregel + Afstand18 / 2

            Set Tussenregel(2) = Tussenregel(1).Mirror3D(SpiegelPnt1, SpiegelPnt2, SpiegelPnt3)

        End If

        If I = 5 Then

            SpiegelPnt1(0) = punt(0)
            SpiegelPnt1(1) = punt(1)
            SpiegelPnt1(2) = punt(2) + BrOnderregel + Afstand16 + BrTussenregel + Afstand17 + BrTussenregel + Afstand18 + BrTussenregel + Afstand19 / 2

            SpiegelPnt2(0) = punt(0) + Breedte
            SpiegelPnt2(1) = punt(1)
            SpiegelPnt2(2) = punt(2) + BrOnderregel + Afstand16 + BrTussenregel + Afstand17 + BrTussenregel + Afstand18 + BrTussenregel + Afstand19 / 2

            SpiegelPnt3(0) = punt(0)
            SpiegelPnt3(1) = punt(1) + Dikte
            SpiegelPnt3(2) = punt(2) + BrOnderregel + Afstand16 + BrTussenregel + Afstand17 + BrTussenregel + Afstand18 + BrTussenregel + Afstand19 / 2

            Set Tussenregel(3) = Tussenregel(2).Mirror3D(SpiegelPnt1, SpiegelPnt2, SpiegelPnt3)

        End If

    Next


End Sub
 
Laatst bewerkt:
Kun je je code niet eerst eens vereenvoudigen en tussen codetags zetten als je hem hier op het forum plaatst.

Bijv.
Code:
c1=punt(0) + BrStijlen + Afstand1 + BrTussenstijlen + Afstand2 + BrTussenstijlen / 2
c2=punt(1)
c3=punt(2) + BrOnderregel + Afstand16 + 1.3
c4=punt(0) + BrStijlen + Afstand1 + BrTussenstijlen + Afstand2 + BrTussenstijlen / 2
c5=punt(1)
c6=punt(2) + BrOnderregel + Afstand16 + BrTussenregel - 1.3

for jj=1 to 12
   LijnTussenstijl(c1,c2,c3,c4,c5,c6)
Next

Onderzoek de betekenis eens van Select Case
 
Laatst bewerkt:
hallo,

Ik heb ondertussen deze Call's in comentaar gezet om verder te kunnen werken aan men programma. heb er zo enkelen die op elkaar lijken . Het eerste programma tussenregel1 werkt goed. maar als het programma aan tussenregel2 begint (bijna indentiek programma alleen andere maten) dan tekent hij de eerste lijn en dan gaat hij gewon verder naar het einde van het programma. Snap niet hoe dit komt eigenlijk :p

Groetjes
 
1. voor het starten van een macro is call overbodig
2. als de macro 'tussenregel' heet roep je 'm zo aan

Code:
 Tussenregel arg1, arg2, arg3.....etc
3. boolean is geen een eigenschap van een macro
Code:
Tussenregel acSubtraction, KopieTussenstijl(1)
kan qua syntaxis eventueel wel
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan