Corel & Dim & VB

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
ssv22
Обычный пользователь
Обычный пользователь
 
Сообщения: 89
Зарегистрирован: 06.11.2005 (Вс) 8:47

Corel & Dim & VB

Сообщение ssv22 » 30.05.2008 (Пт) 8:20

Добрый всем день!
Вопрос такой:
как средствами VB(API) "вытащить" параметры предварительного выбранноного размера Corela: тип р-ра и главное само значение(число) , (мне главное число, ну и тип не помешает), чтобы потом можно было проводить с ним матем. операции. Никак не получается!

Сам-то я пишу на VB к SolidWorks`y и Оффису(word, эксел).
А тут прямо ну никак :-(
Было-бы ненеплохо, если-бы VB сам сканировал лист Corela, выбирал размеры и далее.
Если не к размерам, то хотя-бы к другим примитивам. Но тут нужно, чтобы определялся тип примитива.

Сам-то Corel вроде я научился подключать, но тоже было-бы неплохо узнать мнение специалистов (я имею ввиду саму инициализацию: открыть лист CORELa и тд.).
Какие-нибудь спецбиблиотеки нужно подлючать в парметрах самого VB?

Заранее благодарен!

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 30.05.2008 (Пт) 9:01

Непонятно, о каком числе идет речь.
Lasciate ogni speranza, voi ch'entrate.

ssv22
Обычный пользователь
Обычный пользователь
 
Сообщения: 89
Зарегистрирован: 06.11.2005 (Вс) 8:47

Сообщение ssv22 » 30.05.2008 (Пт) 9:39

alibek писал(а):Непонятно, о каком числе идет речь.


Размерный текст - его значение.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 30.05.2008 (Пт) 9:52

А на русском языке?
Lasciate ogni speranza, voi ch'entrate.

ssv22
Обычный пользователь
Обычный пользователь
 
Сообщения: 89
Зарегистрирован: 06.11.2005 (Вс) 8:47

Сообщение ssv22 » 30.05.2008 (Пт) 10:20

alibek писал(а):А на русском языке?


Когда мы в Corele проставляем размер, то указываем сначала первую точку, затем вторую, и затем положение размерного текста.
После этого Corel вычсляет измеренное расстояние и ставит число размера - размерный текст(это на конструкторском языке).
Допустим, имеем квадрат 100х100.
Берем команду "размер", выбираем горизонтальный р-р, указываем одну из вершин, затем другую и Corel ставит размер, где и пишет число 100.
Вот это число мне и надо "добыть" средствами VB!
В объекте "размер" есть ведь суффикс, перфикс, линии...
А где добыть само значение размера?
Вот в чем вопрос.
В VB к DolidWorks`y - легче: есть объект и параметры. Один отвечает за вид стрелки(например)... а один из них и содержит само значение рамера!

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 30.05.2008 (Пт) 10:47

А как ты указываешь, размер какого именно объекта тебя интересует?
Я бы непосредственно размер и измерял. А не перебирал бы коллекцию объектов, ища тот, который связан с искомым объектом, и не извлекал бы из него значение.
Lasciate ogni speranza, voi ch'entrate.

ssv22
Обычный пользователь
Обычный пользователь
 
Сообщения: 89
Зарегистрирован: 06.11.2005 (Вс) 8:47

Сообщение ssv22 » 30.05.2008 (Пт) 11:45

alibek писал(а):А как ты указываешь, размер какого именно объекта тебя интересует?
Я бы непосредственно размер и измерял. А не перебирал бы коллекцию объектов, ища тот, который связан с искомым объектом, и не извлекал бы из него значение.


Я его вообще не указываю!
Ну вот нарисовал я кубик проставил горизонтальный размер одной из сторон, потом его(размер) и выбрал/замаркировал,
а дальше уже моя прога должна работать.
Я обычно делаю форму VB с расположением "поверх всех"
Именно так я делаю в SolidWorks`e : выбрал объект (тот же размер) а потом на форме нажимаю конопочку, допустим, "Проставить допуск" ну и тд.
Ну вот посмотри хотя-бы скриншоты моих прог:
http://www.pogruzka.com/julio/swprog/mu ... ol2006.gif

http://www.pogruzka.com/julio/swprog/mu ... tools2.gif

http://www.pogruzka.com/julio/swprog/as ... olssca.gif

http://www.pogruzka.com/julio/swprog/sw ... viewsw.gif

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 30.05.2008 (Пт) 12:21

То есть ты используешь текущий выбранный объект?
Lasciate ogni speranza, voi ch'entrate.

ssv22
Обычный пользователь
Обычный пользователь
 
Сообщения: 89
Зарегистрирован: 06.11.2005 (Вс) 8:47

Сообщение ssv22 » 30.05.2008 (Пт) 12:32

alibek писал(а):То есть ты используешь текущий выбранный объект?

В основном, да. Но есть и метод перебора объектов. Это когда выбираешь объекты нужного мне типа, а потом уже в цикле можно обрабатывать отдельный объект.
Но если нужно провести операцию над отдельным объектом, зачем выбирать все?. Это же время...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 30.05.2008 (Пт) 13:00

Понятно.
Наверное запомнить Document.ActiveShape, а затем перебрать все Shapes, у которых .CloneLink.Parent ссылается на эту фигуру и тип фигуры равен cdrLinearDimensionShape. Ну и у найденной фигуры посмотреть .Text.Contents.
Corel-а у меня нет, поэтому проверить и сказать точнее не могу.
Lasciate ogni speranza, voi ch'entrate.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 30.05.2008 (Пт) 13:02

Еще есть подозрение, что структурированные данные (тип, значение размера) можно найти в объекте Shape.Dimension.DimensionLinear.
Lasciate ogni speranza, voi ch'entrate.

ssv22
Обычный пользователь
Обычный пользователь
 
Сообщения: 89
Зарегистрирован: 06.11.2005 (Вс) 8:47

Сообщение ssv22 » 30.05.2008 (Пт) 13:40

alibek писал(а):Еще есть подозрение, что структурированные данные (тип, значение размера) можно найти в объекте Shape.Dimension.DimensionLinear.

Вот что-то начинает проясняться...
А то я "структуру" объектов Corelа на уровне VB не знаю...
Спасибо!
Но если еще какие мысли/советы возникнут, внимательно выслушаю :-)

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 30.05.2008 (Пт) 14:07

Посмотри файл C:\Program Files\Corel\<corel>\Programs\CorelDRAW VBA Object Model.pdf
Ну и поизучай эту модель в Object Browser (F2) и почитай справку.
Lasciate ogni speranza, voi ch'entrate.

ssv22
Обычный пользователь
Обычный пользователь
 
Сообщения: 89
Зарегистрирован: 06.11.2005 (Вс) 8:47

Сообщение ssv22 » 30.05.2008 (Пт) 14:11

alibek писал(а):Посмотри файл C:\Program Files\Corel\<corel>\Programs\CorelDRAW VBA Object Model.pdf
Ну и поизучай эту модель в Object Browser (F2) и почитай справку.

OK!
Спасибо!

ssv22
Обычный пользователь
Обычный пользователь
 
Сообщения: 89
Зарегистрирован: 06.11.2005 (Вс) 8:47

Corel & Dim & VB

Сообщение ssv22 » 04.06.2008 (Ср) 20:09

Еще раз обращаюсь!
Кое-что поизучал по "Corel & Dim & VB", вот что получается:
'----------------------------------------------------
Public cDraw As CorelDRAW.Application
Public curDoc As CorelDRAW.Document
Public p As CorelDRAW.Page
Public sh As CorelDRAW.Shape
Public sPathToFile As String

Public Wnd As CorelDRAW.Window
Public colType As cdrColorType
Public csh As CorelDRAW.Color
Public shd As CorelDRAW.Dimension
Public shd1 As CorelDRAW.Dimension
Public s As CorelDRAW.TextLines
Public rr1 As CorelDRAW.Text
'----------------------------------------------------
Public Sub redim1()

Set cDraw = CreateObject("CorelDRAW.Application")
cDraw.Visible = True
Set curDoc = cDraw.ActiveDocument ' .Documents.Application.ActiveDocument '.Open sPathToFile

Set sh = CorelDRAW.ActiveShape
Set shd = CorelDRAW.ActiveShape.Dimension

sfx = shd.Suffix <<----------- вот "вытаскиваю" Suffix размерного текста, он сейчас пустой
shd.Suffix = " = 123" <<----------- назначаю новый суффикс размерного текста
В результате текст размера изменяется(его суффикс) !

shd.TextShape.Copy 'OK! - проба, копирование размерного текста в буффер обмена - получается.
Т.е. "вытащить" его можно, а вот как его "вытащить" в переменную - еще не разобрался :-(

End Sub

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 05.06.2008 (Чт) 9:16

Если shd.TextShape.Copy помещает нужные тебе данные в буфер обмена, то попробуй, что выдает команда MsgBox shd.TextShape.Text.Contents.
Lasciate ogni speranza, voi ch'entrate.

ssv22
Обычный пользователь
Обычный пользователь
 
Сообщения: 89
Зарегистрирован: 06.11.2005 (Вс) 8:47

Сообщение ssv22 » 05.06.2008 (Чт) 10:31

alibek писал(а):Если shd.TextShape.Copy помещает нужные тебе данные в буфер обмена, то попробуй, что выдает команда MsgBox shd.TextShape.Text.Contents.

Вот оно Волшебное слово, которое я искал!

Выдает размер в виде строки, ну а преобразовать его в число - это уж чистый VB. И в переменную получается его "загонять".
Только я не нашел его описание в справке по VBA!
И когда я пишу строку кода:
shd.TextShape.Text ставлю точку, ведь по идее должно в списке отобразиться и это слово! А его там нет.
Может я какие библиотеки Corela не подключил?
Огромное спасибо!

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 05.06.2008 (Чт) 11:17

Когда напишешь shd.TextShape.Text, нажми Ctrl+I.
Если в описании .Text объявлен как Object, то никакого выпадающего списка и не будет.
Кроме того, поищи все-таки документацию.
Я подозреваю, что нужное тебе число (прямо в числовом виде, без возни со строками) можно будет найти где-то в районе shd.DimensionLinear.
Lasciate ogni speranza, voi ch'entrate.

ssv22
Обычный пользователь
Обычный пользователь
 
Сообщения: 89
Зарегистрирован: 06.11.2005 (Вс) 8:47

Сообщение ssv22 » 06.06.2008 (Пт) 17:21

alibek писал(а):Когда напишешь shd.TextShape.Text, нажми Ctrl+I.
Если в описании .Text объявлен как Object, то никакого выпадающего списка и не будет.
Кроме того, поищи все-таки документацию.
Я подозреваю, что нужное тебе число (прямо в числовом виде, без возни со строками) можно будет найти где-то в районе shd.DimensionLinear.

Да нет, когда я после
shd.TextShape.Text
ставлю точку список появляется, там много всякого есть, а вот
Contents - нету!
Поищу еще документацию...
А так, вообще-то, все устраивает - особой "возни со строками" нет!


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

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

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

    TopList