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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Будет ли корректным совмещать коды VBA и другой?

Будет ли корректным совмещать коды VBA и другой?

Ответ
Поиск в этой теме
Непрочитано 28.05.2008, 14:45 #1
Будет ли корректным совмещать коды VBA и другой?
Aysulu
 
там
Регистрация: 28.03.2007
Сообщений: 15

Мне прислали код *.ebs попросили добавить функцию,чтобы пирамиды на которые опираются цилиндры(в гориз.положении) обрезались соответственно. в Acad-e использовала Union. и код на эту функцию есть,НО....этот код(присланный)не для акада.....помогите чайнику..


Код:
[Выделить все]
'Draw platform
		
				'1 part			 
				Call at_Point_set (basePt, 0.0, 0.0, 0.0)
				Call at_Point_translateByVector(basePt, dirpt, ZAxis, -(C6 / 2.0))				
				Call at_Point_translateByVector(basePt, basePt, XAxis, (sizeE / 5.0))
				Call at_Point_translateByVector(basePt, basePt, YAxis, -(sizeH))
'				Call at_Point_translateByVector(basePt, basePt, ZAxisNormal, sizeM / 2.0)
'				Call at_Point_translateByVector(basePt, basePt, XAxisNormal, sizeN / 2.0)
				Call at_Point_set (apexPt, 0.0, 0.0, 0.0)
				Call at_Point_translateByVector(apexPt, dirpt, ZAxis, -(C6 / 2.0) + (SwapLenght + B6 + B7 + B8))
 				Call at_Point_translateByVector(apexPt, apexPt, XAxis, (sizeE / 5.0))				
			   	Call at_Point_translateByVector(apexPt, apexPt, YAxis, -(sizeH))
'				Call at_Point_translateByVector(apexPt, apexPt, ZAxisNormal, sizeM / 2.0)
'				Call at_Point_translateByVector(apexPt, apexPt, XAxisNormal, sizeN / 2.0)
'				Call at_Vector_set (apexOffset, 0.0, 0.0, 0.0)
				apexOffset = ZAxis
				rotation = 0'at_Cnv_dtor(45)
				'boxWidth = sizeN
				'boxLength = sizeM
				baseWidth = sizeN
				baseLength = sizeK 'sizeM
				rotation = 0.0
'				Call at_Point_set (apexPt, 0.0, 0.0, 1.0)
'				Call at_Vector_set (apexOffset, 0.0, 0.0, 0.0)
				apexWidth = sizeN
				apexLength = sizeK 'sizeM - (D2 * 2.0)
				obj = at_CADPyramid_create(basePt, baseWidth, baseLength, rotation, apexPt, apexWidth, apexLength, apexOffset)
							


'Trim platform

Privat Sub objBooleanOpr() 
Dim objFirst As Long '3DSolid
Dim objSecond As Long '3DSolid
Dim basePt As Point
Dim strOp As String




On Error Resume Next
With ThisDrawing.Utility
' get first solid from user 
.GetEntity objFirst, basePt, "Pick a solid to edit: "

If Err Then
MsgBox "That is not an 3DSolid"
Exit With
End If
' highlight entity
objFirst.Highlight True
objFirst.Update

' get second solid from user
.GetEntity objSecond, baselPt, "Pick a solid to combine: "

If Err Then
MsgBox "That is not an 3DSolid"
Exit With
End If

' exit if they're the same

If objFirst Is objSecond Then

MsgBox "You must pick 2 different solids"
Exit With
End If

' highlight entity

objSecond.Highlight True
objSecond.Update

' get trim operation
.InitializeUserInput 1, "Intersect Subtract Union"

strOp = .GetKeyword(_
"Boolean operation [Intersect/Subtract/Union]: ")

' combine the solids
Select Case strOp
Case "Intersect": objFirst.Boolean acIntersection,objSecond
Case "Subtract": objFirst.Boolean acSubtraction, objSecond
Case "Union": objFirst.Boolean acUnion, objSecond
End Select

' highlight entity

objFirst.Highlight False
objFirst.Update
End With
				
End Sub


' Add the current object set to the drawing
				stat = at_CADCurrObjectSet_addToDrawing()

.....
это часть кода.

Платформа из их кода,соответственно Trim-моё.
Просмотров: 3096
 
Автор темы   Непрочитано 28.05.2008, 21:54 никто не поможет сегодня да?
#2
Aysulu


 
Регистрация: 28.03.2007
там
Сообщений: 15
<phrase 1=


а кстати я тут могла бы наверное использовать функцию "SelectionSet" в данном случае?допустим создать фильтр...но можно ли писать в коде который не для акада "as AcadSelectionSet" -нет конечно,а как тогда писать? помогите плизь....
Aysulu вне форума  
 
Непрочитано 28.05.2008, 22:54
#3
Кулик Алексей aka kpblc
Moderator

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


Судя по коду, это VB. Или один из его клонов. Соответственно в проект надо добавить ссылки на библиотеки AutoCAD.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 29.05.2008, 00:25
#4
Aysulu


 
Регистрация: 28.03.2007
там
Сообщений: 15
<phrase 1=


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Судя по коду, это VB. Или один из его клонов. Соответственно в проект надо добавить ссылки на библиотеки AutoCAD.
так я уже выяснила что путем Selecta мне не выделить нужные "тела"

а зачем ссылки на библиотеки ?? этот код писался для другой программы...а мне лишь нужно обрезать кое чего ....

может как то можно выделить по определенным параментрам 4 Solid-a и объединить?
Aysulu вне форума  
 
Непрочитано 29.05.2008, 09:00
#5
fixo

Lisp/VBA/VB.NET Hobbyist
 
Регистрация: 24.03.2005
Славен Град Петров
Сообщений: 367


Залей сюда рисунок или чертеж
не понятно, "кто на ком стоит"

~'J'~
fixo вне форума  
 
Автор темы   Непрочитано 29.05.2008, 10:55
#6
Aysulu


 
Регистрация: 28.03.2007
там
Сообщений: 15
<phrase 1=


нувот,это всё начерчено надо "подрезать" пирамиды в основании..под цилиндр.
Миниатюры
Нажмите на изображение для увеличения
Название: 3_primer.jpg
Просмотров: 82
Размер:	49.0 Кб
ID:	6911  
Aysulu вне форума  
 
Непрочитано 29.05.2008, 11:30
#7
fixo

Lisp/VBA/VB.NET Hobbyist
 
Регистрация: 24.03.2005
Славен Град Петров
Сообщений: 367


Здесь ничего не надо мудрить
Просто объедини первую призму с цилиндром выше
Аналогично для второй призмы а потом объединяй все
остальные детали с полученными

~'J'~
fixo вне форума  
 
Непрочитано 29.05.2008, 12:41
#8
fixo

Lisp/VBA/VB.NET Hobbyist
 
Регистрация: 24.03.2005
Славен Град Петров
Сообщений: 367


Для объединения всех деталей в единое целое
дважды выбери эти детали:

Код:
[Выделить все]
Option Explicit
''
'' установить в опциях:
'' Tools->Options->General->Break on Unhandled Errors
''
Sub TryIt()
Dim oSset1 As AcadSelectionSet
Dim oSset2 As AcadSelectionSet
Dim oEnt1 As AcadEntity
Dim oEnt2 As AcadEntity
Dim oSolid As Acad3DSolid
Dim itmSolid As Acad3DSolid
Dim ftype(0) As Integer
Dim fdata(0) As Variant
Dim dxfCode, dxfValue
ftype(0) = 0: fdata(0) = "3DSOLID"
dxfCode = ftype: dxfValue = fdata

          With ThisDrawing.SelectionSets
               While .Count > 0
                    .Item(0).Delete
               Wend
           Set oSset1 = .Add("$Prism$")
           Set oSset2 = .Add("$Rolls$")
          End With
oSset1.SelectOnScreen dxfCode, dxfValue
oSset2.SelectOnScreen dxfCode, dxfValue

For Each oEnt1 In oSset1
Set oSolid = oEnt1
For Each oEnt2 In oSset1
Set itmSolid = oEnt2
On Error Resume Next
If oSolid.ObjectID <> itmSolid.ObjectID Then
itmSolid.Boolean acUnion, oSolid
End If
Next
Next
oSset1.Delete
Set oSset1 = Nothing
oSset2.Delete
Set oSset2 = Nothing
End Sub
~'J'~
fixo вне форума  
 
Автор темы   Непрочитано 29.05.2008, 13:59
#9
Aysulu


 
Регистрация: 28.03.2007
там
Сообщений: 15
<phrase 1=


Видимо вы меня не поняли,точнее я глупо объяснила,код реализуется в AutoPlant 3D (насколько я узнала).
то что в Автокаде можно объединить объекты,я знаю.и поэтому втюхнула туда код ('Trim platforma),основываясь на функции acUnion.


но не работает так,может есть варианты какие то?
Aysulu вне форума  
 
Непрочитано 29.05.2008, 15:43
#10
fixo

Lisp/VBA/VB.NET Hobbyist
 
Регистрация: 24.03.2005
Славен Град Петров
Сообщений: 367


Ничего не могу сказать - у меня только
Автокад 2008, в нем это работает

~'J'~
fixo вне форума  
 
Автор темы   Непрочитано 29.05.2008, 16:39
#11
Aysulu


 
Регистрация: 28.03.2007
там
Сообщений: 15
<phrase 1=


аналогично. надо попросить переместить тему в "прочее программирование"
Aysulu вне форума  
 
Непрочитано 29.05.2008, 16:41
#12
Кулик Алексей aka kpblc
Moderator

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


Куда-куда переместить?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 29.05.2008, 20:05
#13
Aysulu


 
Регистрация: 28.03.2007
там
Сообщений: 15
<phrase 1=


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Куда-куда переместить?
Форум DWG.RU > Программное обеспечение > Прочее. Программное обеспечение




почитала мануалы по AutoPlant(Constr.2D, Piping) вычитала что в нём есть функция типо Selection set,po Component-ам и ее можно использовать в 3D modeling, а вот как вырезать(объединить)?
Aysulu вне форума  
 
Непрочитано 29.05.2008, 22:37
#14
Кулик Алексей aka kpblc
Moderator

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


Программное обеспечение и программирование все же разные вещи. Тему оставим на месте
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Будет ли корректным совмещать коды VBA и другой?

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу найти коды DXF для selectionset в VBA... ssn Программирование 4 06.12.2003 17:19