Как написать SendCommand для GeomConstraint ?
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как написать SendCommand для GeomConstraint ?

Как написать SendCommand для GeomConstraint ?

Ответ
Поиск в этой теме
Непрочитано 28.09.2012, 14:34 #1
Как написать SendCommand для GeomConstraint ?
svetrsa
 
программист
 
Днепропетровск
Регистрация: 28.09.2012
Сообщений: 8

Пожалуйста Помогите разобраться как написать SendCommand для GeomConstraint
acadDoc.SendCommand "(setq ptLine (list " & P2(0) & " " & P2(1) & "))" & vbCr
acadDoc.SendCommand "(setq ptCircle (list " & P0(0) & " " & P0(1) & "))" & vbCr
acadDoc.SendCommand ""GeomConstraint"" ""_Tangent"" ptCircle & vbCr & ptLine & vbCr & vbCr
Берет первый объект(окружность), затем второй объект(линия) а потом затыкается и хочет чего-то еще
Просмотров: 3558
 
Непрочитано 29.09.2012, 13:47
#2
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406


Язык-то какой?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 01.10.2012, 10:29
#3
svetrsa

программист
 
Регистрация: 28.09.2012
Днепропетровск
Сообщений: 8


VB 6
svetrsa вне форума  
 
Непрочитано 02.10.2012, 10:12
#4
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 811


Кажется пропущен пробел после ""GeomConsrait"":
Код:
[Выделить все]
acadDoc.SendCommand ""GeomConstraint"" & " " & ""_Tangent"" & " " & ptCircle & vbCr & ptLine & vbCr & vbCr
еще момент, лучше команду сохранять в строковую пременную,
а затем уже посылать ее в команду полностью
вместо явных указаний примитивов используй функцию handent
Код:
[Выделить все]
"(handent " & Chr(34) & ptCircle.Handle & " & Chr(34) & ")"
... и тд
Олег (jr.) вне форума  
 
Автор темы   Непрочитано 02.10.2012, 12:49
#5
svetrsa

программист
 
Регистрация: 28.09.2012
Днепропетровск
Сообщений: 8


Спасибо за участие, но на пробел выдает ошибку. А с handent не работает и через objLine.ObjectID тоже
svetrsa вне форума  
 
Непрочитано 02.10.2012, 13:00
#6
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 811


Цитата:
Сообщение от svetrsa Посмотреть сообщение
Спасибо за участие, но на пробел выдает ошибку. А с handent не работает и через objLine.ObjectID тоже
Закомментируй последнюю строку в SendCommand,
потом попробуй нарисовать линию и окружность, я сомневаюсь
что будет рисовать

Упс, игнорируй это и предыдущее сообщение.

Последний раз редактировалось Олег (jr.), 02.10.2012 в 13:09.
Олег (jr.) вне форума  
 
Непрочитано 02.10.2012, 14:50
#7
5hev

roads
 
Регистрация: 22.12.2010
msk
Сообщений: 121
<phrase 1= Отправить сообщение для 5hev с помощью Skype™


Доброго времени!
Программная обработка функции Geomconstraint имеет особенность (на примере lisp):
Код:
[Выделить все]
 (vl-cmdf "_gctangent" (car(entsel)) (getpoint) (car(entsel)) (getpoint))
Вы можете видеть, что аргументы следуют в таком порядке: объект точка на нем объект точка на нем
В данном случае, вместо выбора типа зависимости, использую прямой вызов Касательной.
5hev вне форума  
 
Автор темы   Непрочитано 02.10.2012, 15:41
#8
svetrsa

программист
 
Регистрация: 28.09.2012
Днепропетровск
Сообщений: 8


5hev[ru], гениально! Работает! Огромное спасибо!
А как теперь программно отменить зависимость?

Последний раз редактировалось svetrsa, 02.10.2012 в 15:52.
svetrsa вне форума  
 
Непрочитано 02.10.2012, 16:44
#9
5hev

roads
 
Регистрация: 22.12.2010
msk
Сообщений: 121
<phrase 1= Отправить сообщение для 5hev с помощью Skype™


Чтобы удалить любую зависимость:
Код:
[Выделить все]
 (vl-cmdf "_delconstraint" (entsel) "")
Прим. Обратите внимание на последние кавычки.
Или иной раз просто _U

Последний раз редактировалось 5hev, 02.10.2012 в 16:59. Причина: Прим.
5hev вне форума  
 
Непрочитано 02.10.2012, 23:21
#10
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 811


Попробуй код:
Код:
[Выделить все]
   Public Sub testGeomConstraint()
            Dim appver As Object = TryCast(My.Computer.Registry.GetValue("HKEY_CURRENT_USER\Software\Autodesk\AutoCAD", "CurVer", Nothing), Object)
            If appver IsNot Nothing Then
                MsgBox("you have " + "Autocad.Application." + appver.ToString() + " installed")
            Else
                MsgBox("Out of luck, sorry, use your another code instead")
            End If

            Dim vernum As Integer = CInt(Math.Floor(Convert.ToDouble(appver.ToString().Substring(1), CultureInfo.InvariantCulture)))

            Dim progID As String = "Autocad.Application." & vernum.ToString()
            Dim acApp As AcadApplication = Nothing
            Try
                acApp = TryCast(Marshal.GetActiveObject(progID), AcadApplication)

            Catch
                MsgBox("Cannot create object of type """ & progID & """")
                Exit Sub
            End Try
            acApp.Visible = True

            MsgBox("Wait!...")

            Dim acdoc As AcadDocument = acApp.ActiveDocument
            Dim util As AcadUtility
            util = acdoc.Utility
            acdoc.Utility.Prompt(vbLf & "Select objects to create constrait: ")
            Dim ptLine As AcadEntity = Nothing
            Dim pickPt1 As Object = Nothing
            Dim pickPt2 As Object = Nothing
            util.GetEntity(ptLine, pickPt1, "Select a line first:")
            If ptLine Is Nothing Then Exit Sub
            Dim lnHandle As String = ptLine.Handle
            Dim ptCircle As AcadEntity = Nothing
            util.GetEntity(ptCircle, pickPt2, "Select a circle then:")
            If ptCircle Is Nothing Then Exit Sub
            Dim crHandle As String = ptCircle.Handle
            Dim pt1() As Double = TryCast(pickPt1, Double())
            Dim pt2() As Double = TryCast(pickPt2, Double())
            Dim strPnt1 As String = "(list " & pt1(0).ToString() & " " & pt1(1).ToString() & " " & pt1(2).ToString() & ")"
            Dim strPnt2 As String = "(list " & pt2(0).ToString() & " " & pt2(1).ToString() & " " & pt2(2).ToString() & ")"
            acdoc.SetVariable("cmdecho", 0)

            Dim strCommand As String

            strCommand = "(command " & """geomconstraint""" & " " & """tangent""" & " " & strPnt1 & " " & strPnt2 & ") "

            acdoc.SendCommand(strCommand)

            MsgBox("Pokey?")
            acdoc.SetVariable("cmdecho", 1)
        End Sub
Олег (jr.) вне форума  
 
Автор темы   Непрочитано 03.10.2012, 10:30
#11
svetrsa

программист
 
Регистрация: 28.09.2012
Днепропетровск
Сообщений: 8


Спасибо "_delconstraint" то что нужно!
svetrsa вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как написать SendCommand для GeomConstraint ?

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кому написать в минрегионразвития? acid Разное 3 06.09.2011 19:58
Как написать программу нанесения точек на план участка? FOXAL Программирование 18 23.05.2011 14:53
помогите написать программу расчета температуры MathCad Olga12345 Другие CAD системы 4 22.02.2011 15:25
КАК программно написать многострочным текстом? Александер Программирование 11 11.10.2006 16:19
Написать текст (autolisp) Torero LISP 2 23.10.2004 23:53