Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.01.2013, 07:04   #11
ValeraVOLS
Пользователь
 
Регистрация: 29.12.2012
Сообщений: 14
По умолчанию

Цитата:
Сообщение от doober Посмотреть сообщение
Ка ни странно,но для большого количества строк в файле Excel,количество строк кода меньше.

BlockName-это имя блока,а не команда.

Код:
Sub InsertBlock()
    Dim Eeex, K, Path As String, lLastRowMY As Long
      Dim BlockName As String
         Dim insertionPnt(0 To 2) As Double
    Path = "E:\777\Задание.xls"
    Set Eeex = GetObject(Path).Worksheets(1)
    lLastRowMY = Eeex.Cells(Eeex.Rows.Count, 1).End(-4162).Row
    K = Eeex.Range("A1:B" & lLastRowMY)
    Eeex.Parent.Close (False)
    For n = 1 To UBound(K)
        BlockName = K(n, 1)
        insertionPnt(0) = CDbl(Split(K(n, 2), ";")(0))
        insertionPnt(1) = CDbl(Split(K(n, 2), ";")(1))
        insertionPnt(2) = 0#
        Set objTemp = ThisDrawing.ModelSpace.InsertBlock(insertionPnt, BlockName, _
                                                         1, 1, 1, 0)
    Next

End Sub
Как всё таки полезно знать тему по составлению макросов. Хотел бы тоже этому научиться. Как вы этого достигли? Может порекомендуете с чего начать?
ValeraVOLS вне форума Ответить с цитированием
Старый 15.01.2013, 09:25   #12
ValeraVOLS
Пользователь
 
Регистрация: 29.12.2012
Сообщений: 14
По умолчанию

Здравствуйте. Подскажите пожалуйста, как отрисовать "Дугу" в Автокаде между вставленными блоками по коду, который прописан выше? Есть один нюанс, вершины начала и конца "Дуги" отличаются, так как блоки имеют разную конфигурацию. Хотелось бы, чтобы в коде, прописанный выше, была добавлена функция по прорисовке дуги!
ValeraVOLS вне форума Ответить с цитированием
Старый 15.01.2013, 13:02   #13
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Построение аналогично построению на кульмане.
Имеем координаты вершин,радиус.находим координаты центра окружности.
расчитываем углы на вершины.строим дугу.Самое важное-правильный расчет углов.
Код:
Set arcObj = ThisDrawing.ModelSpace.AddArc(centerPoint, radius, startAngleInRadian, endAngleInRadian)
Цитата:
Как всё таки полезно знать тему по составлению макросов. Хотел бы тоже этому научиться. Как вы этого достигли? Может порекомендуете с чего начать?
Это было очень давно.и непрада.Начало 90-х,паяльник,процессор Z80.машинные коды...
+ремонт и обслуживание вычислиьельных комплексов.
Цитата:
с чего начать?
вам главное полность понимать весь процесс построения объекта на листе ватмана,использовать карандаш и рейсшину.
И аналагично выполнить в коде.
Справку прилагаю.
Вложения
Тип файла: rar acadauto.rar (1.76 Мб, 66 просмотров)
Анализ,обработка данных Недорого

Последний раз редактировалось doober; 15.01.2013 в 13:05.
doober вне форума Ответить с цитированием
Старый 15.01.2013, 13:15   #14
ValeraVOLS
Пользователь
 
Регистрация: 29.12.2012
Сообщений: 14
По умолчанию

Процесс построения логики я понимаю исходя из того что я хочу, но не умею использовать типы данных, переменные, констант.
ValeraVOLS вне форума Ответить с цитированием
Старый 15.01.2013, 13:19   #15
ValeraVOLS
Пользователь
 
Регистрация: 29.12.2012
Сообщений: 14
По умолчанию

А вот по коду, который вы предоставили выше для дуги, нельзя ли его привязать к точкам, которые прорисованы в блоках, а радиус сделать каким-нибудь постоянным числом?
ValeraVOLS вне форума Ответить с цитированием
Старый 15.01.2013, 15:21   #16
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Точки есть.радиус есть.
Расчитали центр окружности,расчитали углы,построили дугу.
Код писать на это дело времени нет.
Изображения
Тип файла: jpg U_1.jpg (27.7 Кб, 72 просмотров)
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 18.01.2013, 08:38   #17
ValeraVOLS
Пользователь
 
Регистрация: 29.12.2012
Сообщений: 14
По умолчанию

То есть нужно в вашем коде дописать следующие имена переменных:
Dim arcObj As AcadArc
Dim startAngleInRadian As Double
Dim centerpoint As Double
Dim endAngleInRadian As Double

startAngleInRadian=присвоить точку1 в Блоке 1 (Как сделать чтобы автоматом находилась эта точка?)
centerpoint=присвоить точку2 (Как сделать чтобы автоматом находилась эта точка?)
endAngleInRadian=присвоить точку3 в Блоке 2 (Как сделать чтобы автоматом находилась эта точка?)

Set arcObj = ThisDrawing.ModelSpace.AddArc(cente rPoint, startAngleInRadian, endAngleInRadian)

End Sub
Вложения
Тип файла: rar дуга.rar (19.3 Кб, 8 просмотров)
ValeraVOLS вне форума Ответить с цитированием
Старый 18.01.2013, 15:02   #18
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

startAngleInRadian-Это угол,и он либо расчитывается,либо либо строиться отрезок,и получаем его угол наклона
Цитата:
startAngleInRadian=присвоить точку1 в Блоке 1 (Как сделать чтобы автоматом находилась эта точка?)
Аналогично и для второй точки.
Точка в блоке,если она одна,определяется путем перебора примитивов этого блока.
Если она не одна,то можно создать окружность с радиусом 1.
Центр ее искомая точка.
Центр описываемой окружности расчитывается по формулам из учебника геометрии.

Волоски у Хоттабыча закончились.

PS:Я работаю в 2008.конвертор качать и устанавливать желания нет.
Стоимость макроса с вашим функционалом лежит в пределах 1,5к-2к руб
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 21.01.2013, 09:33   #19
ValeraVOLS
Пользователь
 
Регистрация: 29.12.2012
Сообщений: 14
По умолчанию

Ну хорошо может быть тогда просто подскажите с помощью какой команды отыскивать примитив в блоке?
ValeraVOLS вне форума Ответить с цитированием
Старый 21.01.2013, 13:11   #20
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Код:
    Dim P() As Double
    For Each cell In ThisDrawing.ModelSpace
        If cell.ObjectName = "AcDbCircle" Then
            P = cell.Center
        End If
        If cell.ObjectName = "AcDbPoint" Then
            P = cell.Coordinates
        End If
    Next cell
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вставка таблицы эксель в ворд n0str0m0 Microsoft Office Word 3 22.05.2012 11:51
Вставка текстового блока методом object toglyatty HTML и CSS 2 01.04.2012 18:17
Вставка втроки в связанную эксель таблицу 95979 Microsoft Office Access 1 13.02.2012 12:19
Чертежи в автокаде Lemo Фриланс 4 02.06.2010 06:37
Вставка блока DIV в шаблоне Niсkname HTML и CSS 7 07.03.2009 16:27