VB и штриховка
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > VB и штриховка

VB и штриховка

Ответ
Поиск в этой теме
Непрочитано 26.08.2007, 17:46 #1
VB и штриховка
evgm
 
Регистрация: 06.07.2007
Сообщений: 56

Привет!
В акаде можно указать точку и он сам определит регион для штрихавки. Как бы тоже самое сделать кодом на VBA??? и вообще созможно ли или нужно ему явным образом передавать регион для штрихования???
заранее спасибо
Просмотров: 3738
 
Непрочитано 26.08.2007, 22:21
#2
Кулик Алексей aka kpblc
Moderator

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


попробуй поиграться с _boundary
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 27.08.2007, 10:16
#3
fixo

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


Поработай над таким вариантом:
(проверено только в 2007-м)

Код:
[Выделить все]
Option Explicit
' borrowed from from Help:
Sub Example_AddHatch()

' This example creates an associative hatch in model space.
Dim hatchObj As AcadHatch
Dim patternName As String
Dim PatternType As Long
Dim bAssociativity As Boolean

' Define the hatch
patternName = "ANSI32"
PatternType = 0
bAssociativity = True

On Error GoTo Err_Control

' Create the associative Hatch object in model space
Set hatchObj = ThisDrawing.ModelSpace.AddHatch(PatternType, patternName, _
bAssociativity)
hatchObj.PatternScale = 1.5

' Create the outer boundary for the hatch
Dim ObjLast As AcadEntity
Dim i As Integer
Dim intPt As Variant
Dim pstr As String
Dim outerLoop(0) As AcadEntity
i = ThisDrawing.ModelSpace.Count - 1

intPt = ThisDrawing.Utility.GetPoint(, "Pick the inner point of boundary")
pstr = Replace(CStr(intPt(0)), ",", ".") & "," & Replace(CStr(intPt(1)), ",", ".")
ThisDrawing.SendCommand Chr(3) & Chr(3) & "-boundary" & vbCr & pstr & vbCr & vbCr
Set ObjLast = ThisDrawing.ModelSpace.Item(i + 1)
Set outerLoop(0) = ObjLast

' Append the outerboundary to the hatch object, and display the hatch
hatchObj.AppendOuterLoop (outerLoop)
hatchObj.Evaluate
' delete boundary
ObjLast.Delete
ThisDrawing.Regen True

Err_Control:

End Sub
~'J'~
fixo вне форума  
 
Автор темы   Непрочитано 27.08.2007, 18:44 VB и штриховка
#4
evgm


 
Регистрация: 06.07.2007
Сообщений: 56


работать то вроде работает даже в 2006
только вот окно boundary ждет нажатия пользователем ентера...
без окна не обойтись???
да и вот простые штриховки делает отлично (круги там прямоугольники всякие)
а вот в сложных что-то путается...
evgm вне форума  
 
Непрочитано 27.08.2007, 21:26
#5
C1


 
Регистрация: 13.06.2005
Сообщений: 314


А если
1) выбором точки внутри региона нарисовать линию нулевой длины (или точку)
2) найти регион, с которым она пересекается (перебрав все объекты)через:
intPoints = regionObj.IntersectWith(lineObj, acExtendNone)
3) заштриховать регион
4) удалить линию
C1 вне форума  
 
Автор темы   Непрочитано 28.08.2007, 17:33 VB и штриховка
#6
evgm


 
Регистрация: 06.07.2007
Сообщений: 56


я что-то не понимаю???
IntersectWith кажется должен отдать мне массив точек пересечения двух объйктов... какие могут быть координаты пересечения точки или линии нулевой длины находящейся например внутри окружности???
evgm вне форума  
 
Непрочитано 28.08.2007, 18:15 Re: VB и штриховка
#7
C1


 
Регистрация: 13.06.2005
Сообщений: 314


Цитата:
Сообщение от evgm
я что-то не понимаю???
IntersectWith кажется должен отдать мне массив точек пересечения двух объйктов... какие могут быть координаты пересечения точки или линии нулевой длины находящейся например внутри окружности???
Да, не работает. Но можно попробовать операции с регионами. Так же рисуется вспомогательный регион в точке и проверяется его пересечение методом Boolean:
Region1.Boolean acIntersection, Region2
C1 вне форума  
 
Автор темы   Непрочитано 28.08.2007, 18:58 VB и штриховка
#8
evgm


 
Регистрация: 06.07.2007
Сообщений: 56


взгляните - может я просто неправильно формулирую вопрос...
[ATTACH]1188313102.dwg[/ATTACH]
evgm вне форума  
 
Непрочитано 29.08.2007, 08:24 Re: VB и штриховка
#9
C1


 
Регистрация: 13.06.2005
Сообщений: 314


Цитата:
Сообщение от evgm
взгляните - может я просто неправильно формулирую вопрос...
[ATTACH]1188313102.dwg[/ATTACH]
AutoCAD 2004 у меня сейчас не установлен. А по первому посту:
ThisDrawing.SendCommand "-bhatch p angle 2 0 " (для VBA).
Для VB: AcadDocument.SendCommand "-bhatch p angle 2 0 "
C1 вне форума  
 
Автор темы   Непрочитано 29.08.2007, 20:28 VB и штриховка
#10
evgm


 
Регистрация: 06.07.2007
Сообщений: 56


попробую перефразировать...
я хотел бы по известным координатам ОДНОЙ точки получить
OuterLoop или InnerLoop
а уж потом я сделаю со штриховкой все что нужно....
evgm вне форума  
 
Непрочитано 29.08.2007, 21:30 Re: VB и штриховка
#11
C1


 
Регистрация: 13.06.2005
Сообщений: 314


Цитата:
Сообщение от evgm
попробую перефразировать...
я хотел бы по известным координатам ОДНОЙ точки получить
OuterLoop или InnerLoop
а уж потом я сделаю со штриховкой все что нужно....
Нужно нарисовать штриховку по координатам ОДНОЙ внутренней точки 100,200:
Код:
[Выделить все]
SendCommand "-bhatch p angle 2 0 100,200 " & vbCr
angle - ее тип, 2 - масштаб, 0 - угол
Что не устраивает?
Разумеется это пример, а не кусок кода. Чтобы можно было убедиться что работает. Наверное не нужно объяснять как со строчками работать.
C1 вне форума  
 
Непрочитано 29.08.2007, 23:53 Re: VB и штриховка
#12
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,413
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от evgm
попробую перефразировать...
я хотел бы по известным координатам ОДНОЙ точки получить
OuterLoop или InnerLoop
а уж потом я сделаю со штриховкой все что нужно....
Код:
Александр Ривилис вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > VB и штриховка