Autocad DXF to VB

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
LMA
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 10.12.2003 (Ср) 2:41
Откуда: Санкт-Петербург

Autocad DXF to VB

Сообщение LMA » 10.12.2003 (Ср) 4:03

Здравствуйте, уважаемые!
У меня такой вопрос: Есть код программы, которая открывая autocad'овский файл *.dxf (файл, содержащий информацию о построенных объектах), чертит по этой информации этот же объект в PictureBox. Объект состоит из примитивов (линий и дуг), которые соединены между собой по принципу "от конца предыдущей до начала следующей".
И проблема вот в чём: так как VB6 чертит дуги против часовой стрелки, то начальная точка дуги задаётся положением этой дуги в плоскости. Соответственно с этой точкой и соединяется предыдущий примитив, что далеко не всегда соответствует тому, что начерчено в Autocade. А вот как заставить VB правильно соединять примитивы с одинаковыми координатами, до меня пока ещё не дошло. И если с линиями всё получается, то с дугами просто беда.
Если кто-нибудь сталкивался с подобной проблемой, поделитесь опытом, плиз.

acoustic
Начинающий
Начинающий
 
Сообщения: 20
Зарегистрирован: 09.12.2003 (Вт) 17:30

Сообщение acoustic » 10.12.2003 (Ср) 18:37

Вот, выдрал из API-Guide:
Код: Выделить всё
Const AD_CLOCKWISE = 2
Const AD_COUNTERCLOCKWISE = 1
Private Declare Function ArcTo Lib "gdi32" (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long, ByVal X4 As Long, ByVal Y4 As Long) As Long
Private Declare Function SetArcDirection Lib "gdi32" (ByVal hdc As Long, ByVal ArcDirection As Long) As Long
Private Declare Function GetArcDirection Lib "gdi32" (ByVal hdc As Long) As Long
Private Sub Form_Paint()
    'KPD-Team 2000
    'URL: http://www.allapi.net/
    'E-Mail: KPDTeam@Allapi.net
    If GetArcDirection(Me.hdc) = AD_CLOCKWISE Then
        SetArcDirection Me.hdc, AD_COUNTERCLOCKWISE
    End If
    ArcTo Me.hdc, 20, 20, 50, 60, 50, 60, 20, 60
End Sub


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10

    TopList