CADsite forum

AutoCAD => VBA => Topic gestart door: Thomy op vr 13 03 2009, 10:14:30

Titel: Fout in mijn SUB
Bericht door: Thomy op vr 13 03 2009, 10:14:30
hallo

kheb hier bijna 2 dezelfde sub's enigste verschil is de afstadnen waarmee het werkt. nu mijn probleem is dat de eerste Sub werkt en de 2de tekent hij alleen maar tot de region. denk dat het een fout is bij mijn Sub naam Tussen de haakjes) maar vind de fout niet.

mvg

thomy

Sub dat werkt.

Sub verstek3(punt, BrStijlen, Afstand1, BrTussenstijlen, Afstand2, BrOnderregel, Afstand3, Afstand21, HorAantal4, Afstand22, Afstand23, Afstand24, Afstand25, Tussenstijl, Linkerstijl)

ReDim verstek(0 To 7) As Acad3DSolid

        'Gebied4
        'zet couter terug op 1
        Counter = -1

        Call LijnVerstek(punt(0) + BrStijlen + Afstand1 + BrTussenstijlen + Afstand2 + BrTussenstijlen + Afstand3 + BrTussenstijlen, punt(1), punt(2) + BrOnderregel + Afstand21, punt(0) + BrStijlen + Afstand1 + BrTussenstijlen + Afstand2 + BrTussenstijlen + Afstand3 + BrTussenstijlen - 1.3, punt(1), punt(2) + BrOnderregel + Afstand21 + 1.3)
        Call LijnVerstek(punt(0) + BrStijlen + Afstand1 + BrTussenstijlen + Afstand2 + BrTussenstijlen + Afstand3 + BrTussenstijlen - 1.3, punt(1), punt(2) + BrOnderregel + Afstand21 + 1.3, punt(0) + BrStijlen + Afstand1 + BrTussenstijlen + Afstand2 + BrTussenstijlen + Afstand3 + BrTussenstijlen - 1.3, punt(1), punt(2) + BrOnderregel + Afstand21 + BrTussenregel - 1.3)
        Call LijnVerstek(punt(0) + BrStijlen + Afstand1 + BrTussenstijlen + Afstand2 + BrTussenstijlen + Afstand3 + BrTussenstijlen - 1.3, punt(1), punt(2) + BrOnderregel + Afstand21 + BrTussenregel - 1.3, punt(0) + BrStijlen + Afstand1 + BrTussenstijlen + Afstand2 + BrTussenstijlen + Afstand3 + BrTussenstijlen, punt(1), punt(2) + BrOnderregel + Afstand21 + BrTussenregel)
        Call LijnVerstek(punt(0) + BrStijlen + Afstand1 + BrTussenstijlen + Afstand2 + BrTussenstijlen + Afstand3 + BrTussenstijlen, punt(1), punt(2) + BrOnderregel + Afstand21 + BrTussenregel, punt(0) + BrStijlen + Afstand1 + BrTussenstijlen + Afstand2 + BrTussenstijlen + Afstand3 + BrTussenstijlen, punt(1), punt(2) + BrOnderregel + Afstand21)

        'maakt een region van de getekende lijnen
        Regions = ThisDrawing.ModelSpace.AddRegion(RegionVerstek)
        Set Reg = Regions(0)

        'extrudeerd de region
        Set verstek(0) = ThisDrawing.ModelSpace.AddExtrudedSolid(Regions(0), Dikte, 0)

        'delete de region
        Reg.Delete

        'kopieren van het verstek

        For A = 0 To HorAantal4 - 3

            If A = 0 Then

                SpiegelPnt1(0) = punt(0)
                SpiegelPnt1(1) = punt(1)
                SpiegelPnt1(2) = punt(2) + BrOnderregel + Afstand21 + BrTussenregel + Afstand22 / 2

                SpiegelPnt2(0) = punt(0) + Breedte
                SpiegelPnt2(0) = punt(1)
                SpiegelPnt2(2) = punt(2) + BrOnderregel + Afstand21 + BrTussenregel + Afstand22 / 2

                SpiegelPnt3(0) = punt(0)
                SpiegelPnt3(1) = punt(1) + Dikte
                SpiegelPnt3(2) = punt(2) + BrOnderregel + Afstand21 + BrTussenregel + Afstand22 / 2

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

            End If

            If A = 1 Then

                SpiegelPnt1(0) = punt(0)
                SpiegelPnt1(1) = punt(1)
                SpiegelPnt1(2) = punt(2) + BrOnderregel + Afstand21 + BrTussenregel + Afstand22 + BrTussenregel + Afstand23 / 2

                SpiegelPnt2(0) = punt(0) + Breedte
                SpiegelPnt2(1) = punt(1)
                SpiegelPnt2(2) = punt(2) + BrOnderregel + Afstand21 + BrTussenregel + Afstand22 + BrTussenregel + Afstand23 / 2

                SpiegelPnt3(0) = punt(0)
                SpiegelPnt3(1) = punt(1) + Dikte
                SpiegelPnt3(2) = punt(2) + BrOnderregel + Afstand21 + BrTussenregel + Afstand22 + BrTussenregel + Afstand23 / 2

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

            End If

            If A = 2 Then

                SpiegelPnt1(0) = punt(0)
                SpiegelPnt1(1) = punt(1)
                SpiegelPnt1(2) = punt(2) + BrOnderregel + Afstand21 + BrTussenregel + Afstand22 + BrTussenregel + Afstand23 + BrTussenregel + Afstand24 / 2

                SpiegelPnt2(0) = punt(0) + Breedte
                SpiegelPnt2(1) = punt(1)
                SpiegelPnt2(2) = punt(2) + BrOnderregel + Afstand21 + BrTussenregel + Afstand22 + BrTussenregel + Afstand23 + BrTussenregel + Afstand24 / 2

                SpiegelPnt3(0) = punt(0)
                SpiegelPnt3(1) = punt(1) + Dikte
                SpiegelPnt3(2) = punt(2) + BrOnderregel + Afstand21 + BrTussenregel + Afstand22 + BrTussenregel + Afstand23 + BrTussenregel + Afstand24 / 2

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

            End If

        Next

        'spiegelpnten vor het verstek te kopieren naar de ander stijl

        SpiegelPnt1(0) = punt(0) + BrStijlen + Afstand1 + BrTussenstijlen + Afstand2 + BrTussenstijlen + Afstand3 + BrTussenstijlen + Afstand4 / 3
        SpiegelPnt1(1) = punt(1)
        SpiegelPnt1(2) = punt(2)

        SpiegelPnt2(0) = punt(0) + BrStijlen + Afstand1 + BrTussenstijlen + Afstand2 + BrTussenstijlen + Afstand3 + BrTussenstijlen + Afstand4 / 2
        SpiegelPnt2(1) = punt(1) + Dikte
        SpiegelPnt2(2) = punt(2)

        SpiegelPnt3(0) = punt(0) + BrStijlen + Afstand1 + BrTussenstijlen + Afstand2 + BrTussenstijlen + Afstand3 + BrTussenstijlen + Afstand4 / 2
        SpiegelPnt3(1) = punt(1)
        SpiegelPnt3(2) = punt(2) + Hoogte

        Set verstek(4) = verstek(0).Mirror3D(SpiegelPnt1, SpiegelPnt2, SpiegelPnt3)
        Set verstek(5) = verstek(1).Mirror3D(SpiegelPnt1, SpiegelPnt2, SpiegelPnt3)
        Set verstek(6) = verstek(2).Mirror3D(SpiegelPnt1, SpiegelPnt2, SpiegelPnt3)
        Set verstek(7) = verstek(3).Mirror3D(SpiegelPnt1, SpiegelPnt2, SpiegelPnt3)

        Call Tussenstijl(2).Boolean(acSubtraction, verstek(0))
        Call Tussenstijl(2).Boolean(acSubtraction, verstek(1))
        Call Tussenstijl(2).Boolean(acSubtraction, verstek(2))
        Call Tussenstijl(2).Boolean(acSubtraction, verstek(3))

        Call Tussenstijl(3).Boolean(acSubtraction, verstek(4))
        Call Tussenstijl(3).Boolean(acSubtraction, verstek(5))
        Call Tussenstijl(3).Boolean(acSubtraction, verstek(6))
        Call Tussenstijl(3).Boolean(acSubtraction, verstek(7))


End Sub


sub met fout

Sub verstek4(punt, BrStijlen, Afstand1, BrTussenstijlen, Afstand2, Afstand3, Afstand4, BrOnderregel, BrTussenregel, Afsatnd26, HorAantal5, Afstand27, Afstand28, Afstand29, Afstand30, Tussenstijl, Linkerstijl)

    ReDim verstek(0 To 7) As Acad3DSolid
   
        'gebied 5
        'zet counter terug op 1
        Counter = -1

        Call LijnVerstek(punt(0) + BrStijlen + Afstand1 + BrTussenstijlen + Afstand2 + BrTussenstijlen + Afstand3 + BrTussenstijlen + Afstand4 + BrTussenstijlen, punt(1), punt(2) + BrOnderregel + Afstand26, punt(0) + BrStijlen + Afstand1 + BrTussenstijlen + Afstand2 + BrTussenstijlen + Afstand3 + BrTussenstijlen + Afstand4 + BrTussenstijlen - 1.3, punt(1), punt(2) + BrOnderregel + Afstand26 + 1.3)
        Call LijnVerstek(punt(0) + BrStijlen + Afstand1 + BrTussenstijlen + Afstand2 + BrTussenstijlen + Afstand3 + BrTussenstijlen + Afstand4 + BrTussenstijlen - 1.3, punt(1), punt(2) + BrOnderregel + Afstand26 + 1.3, punt(0) + BrStijlen + Afstand1 + BrTussenstijlen + Afstand2 + BrTussenstijlen + Afstand3 + BrTussenstijlen + Afstand4 + BrTussenstijlen - 1.3, punt(1), punt(2) + BrOnderregel + Afstand26 + BrTussenregel - 1.3)
        Call LijnVerstek(punt(0) + BrStijlen + Afstand1 + BrTussenstijlen + Afstand2 + BrTussenstijlen + Afstand3 + BrTussenstijlen + Afstand4 + BrTussenstijlen - 1.3, punt(1), punt(2) + BrOnderregel + Afstand26 + BrTussenregel - 1.3, punt(0) + BrStijlen + Afstand1 + BrTussenstijlen + Afstand2 + BrTussenstijlen + Afstand3 + BrTussenstijlen + Afstand4 + BrTussenstijlen, punt(1), punt(2) + BrOnderregel + Afstand26 + BrTussenregel)
        Call LijnVerstek(punt(0) + BrStijlen + Afstand1 + BrTussenstijlen + Afstand2 + BrTussenstijlen + Afstand3 + BrTussenstijlen + Afstand4 + BrTussenstijlen, punt(1), punt(2) + BrOnderregel + Afstand26 + BrTussenregel, punt(0) + BrStijlen + Afstand1 + BrTussenstijlen + Afstand2 + BrTussenstijlen + Afstand3 + BrTussenstijlen + Afstand4 + BrTussenstijlen, punt(1), punt(2) + BrOnderregel + Afstand26)

        'maakt een regeion van de getekende lijnen
        Regions = ThisDrawing.ModelSpace.AddRegion(RegionVerstek)
        Set Reg = Region(0)

        'extrudeerd de region
        Set verstek(0) = ThisDrawing.ModelSpace.AddExtrudedSolid(Regions(0), Dikte, 0)

        'kopieren van verstek
        For A = 0 To HorAantal5 - 3

            If A = 0 Then

                SpiegelPnt1(0) = punt(0)
                SpiegelPnt1(1) = punt(1)
                SpiegelPnt1(2) = punt(2) + BrOnderregel + Afstand26 + BrTussenregel + Afstand27 / 2

                SpiegelPnt2(0) = punt(0) + Breedte
                SpiegelPnt2(1) = punt(1)
                SpiegelPnt2(2) = punt(2) + BrOnderregel + Afstand26 + BrTussenregel + Afstand27 / 2

                SpiegelPnt3(0) = punt(0)
                SpiegelPnt3(1) = punt(1) + Dikte
                SpiegelPnt3(2) = punt(2) + BrOnderregel + Afstand26 + BrTussenregel + Afstand27 / 2

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

            End If

            If A = 1 Then

                SpiegelPnt1(0) = punt(0)
                SpiegelPnt1(1) = punt(1)
                SpiegelPnt1(2) = punt(2) + BrOnderregel + Afstand26 + BrTussenregel + Afstand27 + BrTussenregel + Afstand28 / 2

                SpiegelPnt2(0) = punt(0) + Breedte
                SpiegelPnt2(1) = punt(1)
                SpiegelPnt2(2) = punt(2) + BrOnderregel + Afstand26 + BrTussenregel + Afstand27 + BrTussenregel + Afstand28 / 2

                SpiegelPnt3(0) = punt(0)
                SpiegelPnt3(1) = punt(1) + Dikte
                SpiegelPnt3(2) = punt(2) + BrOnderregel + Afstand26 + BrTussenregel + Afstand27 + BrTussenregel + Afstand28 / 2

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

            End If

            If A = 2 Then

                SpiegelPnt1(0) = punt(0)
                SpiegelPnt1(1) = punt(1)
                SpiegelPnt1(2) = punt(2) + BrOnderregel + Afstand26 + BrTussenregel + aafstand27 + BrTussenregel + Afstand28 + BrTussenregel + Afstand29 / 2

                SpiegelPnt2(0) = punt(0) + Breedte
                SpiegelPnt2(1) = punt(1)
                SpiegelPnt2(2) = punt(2) + BrOnderregel + Afstand26 + BrTussenregel + Afstand27 + BrTussenregel + Afstand28 + BrTussenregel + Afstand29 / 2

                SpiegelPnt3(0) = punt(0)
                SpiegelPnt3(1) = punt(1) + Dikte
                SpiegelPnt3(2) = punt(2) + BrOnderregel + Afstand26 + BrTussenregel + Afstand27 + BrTussenregel + Afstand28 + BrTussenregel + Afstand29 / 2

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

            End If

        Next

        'spiegelt het verstek naar andere stijl

        SpiegelPnt1(0) = punt(0) + BrStijlen + Afstand1 + BrTussenstijlen + Afstand2 + BrTussenstijlen + Afstand3 + BrTussenstijlen + Afstand4 + BrTussenstijlen + Afstand5 / 2
        SpiegelPnt1(1) = punt(1)
        SpiegelPnt1(2) = punt(2)

        SpiegelPnt2(0) = punt(0) + BrStijlen + Afstand1 + BrTussenstijlen + Afstand2 + BrTussenstijlen + Afstand3 + BrTussenstijlen + Afstand4 + BrTussenstijlen + Afstand5 / 2
        SpiegelPnt2(1) = punt(1) + Breedte
        SpiegelPnt2(2) = punt(2)

        SpiegelPnt3(0) = punt(0) + BrStijlen + Afstand1 + BrTussenstijlen + Afstand2 + BrTussenstijlen + Afstand3 + BrTussenstijlen + Afstand4 + BrTussenstijlen + Afstand5 / 2
        SpiegelPnt3(1) = punt(1)
        SpiegelPnt3(2) = punt(2) + Hoogte

        Set verstek(4) = verstek(0).Mirror3D(SpiegelPnt1, SpiegelPnt2, SpiegelPnt3)
        Set verstek(5) = verstek(1).Mirror3D(SpiegelPnt1, SpiegelPnt2, SpiegelPnt3)
        Set verstek(6) = verstek(2).Mirror3D(SpiegelPnt1, SpiegelPnt2, SpiegelPnt3)
        Set verstek(7) = verstek(3).Mirror3D(SpiegelPnt1, SpiegelPnt2, SpiegelPnt3)

        Call Tussenstijl(3).Boolean(acSubtraction, verstek(0))
        Call Tussenstijl(3).Boolean(acSubtraction, verstek(1))
        Call Tussenstijl(3).Boolean(acSubtraction, verstek(2))
        Call Tussenstijl(3).Boolean(acSubtraction, verstek(3))

     
        'delete de region
        Reg.Delete

End Sub
Titel: Re: Fout in mijn SUB
Bericht door: EddyBeerke op ma 16 03 2009, 12:54:03
Welke melding krijg je?
Titel: Re: Fout in mijn SUB
Bericht door: Thomy op ma 16 03 2009, 16:20:27
krijg geen foutmelding. hij verspringt gewoon verder naar het einde van het programma of naar de volgende regel na de call van deze SUB.

groeten
Titel: Re: Fout in mijn SUB
Bericht door: EddyBeerke op di 17 03 2009, 08:03:29
Is dit goed dat je de "Counter" op -1 zet ipv 1?
'zet counter terug op 1
        Counter = -1

Kan het zijn dat "A" < 0 is (minder dan)
For A = 0 To HorAantal5 - 3
  If A = 0 Then
    ...

Ã"f...
Zit er een code in het andere deel van het programma zoals:
On Error Resume Next
Titel: Re: Fout in mijn SUB
Bericht door: Thomy op di 17 03 2009, 09:41:05
hej,

ik heb het opgelost was inderdaad een fout bij mijn A.
Nu werkt dit terug :d

Mercie