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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > управление AutoCAD из Delphi

управление AutoCAD из Delphi

Ответ
Поиск в этой теме
Непрочитано 23.08.2010, 15:46 #1
управление AutoCAD из Delphi
digar
 
Регистрация: 30.06.2010
Сообщений: 38

Подскажите толковую книгу по управление AutoCAD из Delphi а то приходится каждый шаг выуживать в интернете. Например нигде не могу найти: как загрузить нужный тип линии?
Просмотров: 4475
 
Непрочитано 23.08.2010, 16:12
#2
Кулик Алексей aka kpblc
Moderator

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


http://dwg.ru/pub/8
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 23.08.2010, 16:25
#3
digar


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


Цитата:
http://dwg.ru/pub/8
Это не то. Данное приложение использует команды LISP и запускается из ACAD. Мне необходимо из моего приложения на Delphi построить изображение в ACAD, причём, чтобы не связываться с конкретной версией ACAD я использую позднее связывание (т.е. библиотеку типов ACAD не использую). Пример:http://www.cadhouse.nm.ru/

Последний раз редактировалось digar, 23.08.2010 в 16:48.
digar вне форума  
 
Непрочитано 23.08.2010, 16:26
#4
Vildar

AutoCAD
 
Регистрация: 26.07.2007
Москва
Сообщений: 1,064


Справка по VBA не подойдёт.

Вот пример из справки
Код:
[Выделить все]
Sub Example_Load()
    ' This example attempts to load the linetype "CENTER" from
    ' the acad.lin file. If the linetype already exists, then
    ' a message is displayed.
    
    Dim linetypeName As String
    linetypeName = "CENTER"
    
    ' Load "CENTER" line type from acad.lin file
    On Error Resume Next    ' trap any load errors
    ThisDrawing.Linetypes.Load linetypeName, "acad.lin"
    
    ' If the name already exists, then notify user
    If Err.Description = "Duplicate record name" Then
        MsgBox "A line type named '" & linetypeName & "' already exists.", , "Load Example"
    End If
    
End Sub
Vildar вне форума  
 
Непрочитано 23.08.2010, 16:28
#5
wasilij1973


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


Книгу нигде не встречал. Тоже приходилось
Цитата:
Сообщение от digar Посмотреть сообщение
выуживать в интернете
статья в т.2 толковая, но данный метод требует досконального знания лисп. Я в своих приложениях использую упрощенную схему: напрямую передаю команды в Автокад, хотя для этого Автокад должен быть готов их принять.
wasilij1973 вне форума  
 
Автор темы   Непрочитано 23.08.2010, 16:30
#6
digar


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


Цитата:
ThisDrawing.Linetypes.Load linetypeName, "acad.lin"
так пробовал, но Delphi не понимает этой конструкции. Проболал и так:ActiveDoc.LineTypes.Load('CENTER','acad.lin')
РУГАЕТСЯ
digar вне форума  
 
Непрочитано 23.08.2010, 16:38
#7
Vildar

AutoCAD
 
Регистрация: 26.07.2007
Москва
Сообщений: 1,064


digar, ссылку на свой сайт дал? Не дурно! )
Vildar вне форума  
 
Автор темы   Непрочитано 23.08.2010, 16:51
#8
digar


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


Vilad, ссылку исправил.
Но, что ты имеешь ввиду:
Цитата:
ссылку на свой сайт дал? Не дурно!
digar вне форума  
 
Непрочитано 23.08.2010, 16:52
#9
wasilij1973


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


digar Такие вещи как загрузка линий, создание нового слоя и т. д. то есть все, что предусмотрено для рядового пользователя выполнять с диалоговых окон для меня пока тоже загадка. Окно вызвать не проблема, но на этом все и заканчивается... Так что тоже ищу ответы.
А с твоего сайта антивирусник заблокировал троян...
wasilij1973 вне форума  
 
Непрочитано 23.08.2010, 16:55
#10
Vildar

AutoCAD
 
Регистрация: 26.07.2007
Москва
Сообщений: 1,064


Цитата:
Сообщение от digar Посмотреть сообщение
Но, что ты имеешь ввиду:
Просто спросил, ты автор сайта. Очень понравилось.
Vildar вне форума  
 
Автор темы   Непрочитано 23.08.2010, 16:58 создание нового слоя
#11
digar


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


Код:
[Выделить все]
  
var
ACADApp,Doc,Layer,MSpace:OLEVariant;
LayerName:string;
LayersCount:integer;
begin
Doc:=ACADApp.ActiveDocument;
//Создаём слой "Горизонтали"
LayerName:='Горизонтали';
Doc.Layers.Add(LayerName);
//Делаем его активным
LayersCount:=Doc.Layers.Count;
for i:= 0 to LayersCount - 1 do
 begin
 Layer:=Doc.Layers.Item(i);
 if AnsiCompareText(Layer.Name, LayerName) = 0 then Break;
 end;
Doc.ActiveLayer:=Layer;
...
end;

Последний раз редактировалось digar, 23.08.2010 в 17:07.
digar вне форума  
 
Непрочитано 23.08.2010, 17:09
#12
Vildar

AutoCAD
 
Регистрация: 26.07.2007
Москва
Сообщений: 1,064


Цитата:
Сообщение от digar Посмотреть сообщение
так пробовал, но Delphi не понимает этой конструкции. Проболал и так:ActiveDoc.LineTypes.Load('CENTER','acad.lin')
РУГАЕТСЯ
Как ругается?
Может это просто ошибка, например такой тип линии неопределен, или дубликат имени.
Vildar вне форума  
 
Автор темы   Непрочитано 23.08.2010, 17:19
#13
digar


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


Vildar, Ты оказался прав!!!
Название 'CENTER' я взял из примера а в списке моего ACAD его нет.
конструкция:
Код:
[Выделить все]
Doc.LineTypes.Load('осевая','ACAD.Lin');
сработала.
ВСЕМ СПАСИБО.
digar вне форума  
 
Непрочитано 23.08.2010, 17:20
#14
wasilij1973


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


Цитата:
Сообщение от digar Посмотреть сообщение
создание нового слоя
Спасибо, digar.
Значит и с загрузкой типа линии все не безнадежно!
wasilij1973 вне форума  
 
Непрочитано 23.08.2010, 17:20
#15
sasha_lif

Дизайнер-конструктор
 
Регистрация: 29.05.2004
Kiev
Сообщений: 1,179
<phrase 1=


digar, #3 Ссылка на сайт, а касперский ругается
Цитата:
Запрашиваемый URL-адрес не может быть предоставлен

В запрашиваемом объекте по URL-адресу:

http://www.cadhouse.nm.ru/

Обнаружена угроза:

объект заражен Trojan-Downloader.JS.Remora.bg
__________________
Kiev, Ukraine
sasha_lif вне форума  
 
Непрочитано 23.08.2010, 17:32
#16
Vildar

AutoCAD
 
Регистрация: 26.07.2007
Москва
Сообщений: 1,064


sasha_lif, А я сходил туда, без антивиря, пока живой.
Vildar вне форума  
 
Автор темы   Непрочитано 24.08.2010, 00:00
#17
digar


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


задаём тип линии:
Код:
[Выделить все]
var
p,PL,Doc:OleVariant;
i,j:integer;
begin
...
Doc:=ACADApp.ActiveDocument;
...
//задаём линию
 For j:=1 to high(mas[i]) do
  begin
  p[k]:=mas[i,j].y;xmin:=min(xmin,p[k]);xmax:=max(xmax,p[k]);
  inc(k);
  p[k]:=mas[i,j].x;ymin:=min(ymin,p[k]);ymax:=max(ymax,p[k]);
  inc(k);
  end;
 Pl:= Doc.ModelSpace.AddLightWeightPolyline(P);

//   устанавливаем DASH LineType
    try
    PL.Linetype:='ACAD_ISO02W100';
    except
    Doc.LineTypes.Load('ACAD_ISO02W100','ACAD.Lin');
    PL.Linetype:='ACAD_ISO02W100';
    end;

Последний раз редактировалось digar, 24.08.2010 в 11:39.
digar вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > управление AutoCAD из Delphi



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Документация Проектировщику на Torrents DEM Разное 263 03.09.2024 12:25
В русской версии AutoCAD 2010 SP1 32-bit файл Acad.PGP содержит ошибки. hwd Баги и пожелания в Autodesk 21 21.04.2010 20:27
Информация по идентификационным кодам программ в сетевых лицензиях Autodesk KSI AutoCAD 1 14.09.2009 15:59
AutoCad и Delphi. Добавление точки Зойберг Программирование 15 28.02.2008 23:18
Delphi and AutoCAD John Ch. Программирование 4 31.01.2004 13:58