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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Как написать команду для вставки многих текстов с разным содержанием в разные места

Как написать команду для вставки многих текстов с разным содержанием в разные места

Ответ
Поиск в этой теме
Непрочитано 27.11.2018, 08:35 #1
Как написать команду для вставки многих текстов с разным содержанием в разные места
lobaskov
 
Регистрация: 21.10.2017
Сообщений: 3

Добрый день!
Делаю команды в экселе для последующей вставки в командную строку Автокад чтобы отрисовывал нужное. К примеру команда "Плиния 0,0 0,15 ", отрисовывает ее. Потом много таких значений в ячейках экселя копрую - вставляю в автокад и все ок. только вот с текстом немного сложнее. Помогите написать ни Лиспе либо просто с помощью команды Мтекст
Просмотров: 1480
 
Непрочитано 27.11.2018, 09:00
#2
trir


 
Регистрация: 18.12.2010
Сообщений: 5,057


(command "_mtext" '(0 0) '(1 1) "test" "")
trir вне форума  
 
Непрочитано 27.11.2018, 09:12
#3
Кулик Алексей aka kpblc
Moderator

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


ИМХО проще на лиспе сделать отдельную функцию по созданию многострочника со всеми настройками и ее вызывать по мере надобности.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 27.11.2018, 09:33
#4
trir


 
Регистрация: 18.12.2010
Сообщений: 5,057


такой способ позваляет за пару кликов перекинуть большой объём данных из Excel'я в AutoCAD
а настроек обычно в Excel'е нет
trir вне форума  
 
Непрочитано 27.11.2018, 10:29
#5
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,041


Если акад не LT, то можно и через COM напрямую из экселя вставлять без промежуточных телодвижений - не обязательно лисп использовать)
Сергей812 вне форума  
 
Автор темы   Непрочитано 28.11.2018, 12:22
#6
lobaskov


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


Спасибо! Вот такая команда из экселя работает нормально в новом чистом листе:
(command "_TEXT" "_MC" '(0 0) 2.5 "90" "ПК1")\P
(command "_TEXT" "_MC" '(10 0) 2.5 "90" "ПК2")\P
А вот в этом файле почему то нет!
https://cloud.mail.ru/public/Eygp/kWday2bSg
Кто сможет помочь?
lobaskov вне форума  
 
Непрочитано 30.11.2018, 12:47
#7
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,041


Если используете Excel, так используйте его нормально:

Область данных на листе экселя:

Текст | X | Y | Z | Height | Angle
Текст 1 | 10 | 20 | 0 | 2 | 0
Текст 2 | 10 | 40 | 0 | 2,1 | 45
Текст 3 | 10 | 60 | 0 | 2,2 | 90


и

Код:
[Выделить все]
' Вставка множества текстов из области данных листа Excel
Public Sub InsertText()
  On Error Resume Next
  ' Подключаемся к акаду
  Dim lAcadApp As Object
  Set lAcadApp = GetObject(, "AutoCAD.Application")
  If Err Then Exit Sub
  ' Получаем текущий документ
  Dim lAcadDoc As Object
  Set lAcadDoc = lAcadApp.ActiveDocument
  ' Получаем пространство моделей
  Dim lAcadMS As Object
  Set lAcadMS = lAcadDoc.ModelSpace
  ' Получаем массив данных с экселевского листа
  ' lInputSheet из именованного диапазона Data
  Dim lInputData As Variant
  lInputData = InputSheet.Range("Data")
  ' В цикле вставляем текст в акад
  Dim I1 As Long
  For I1 = 1 To UBound(lInputData, 1)
    ' Собираем координаты
    Dim lCoorD(2) As Double, lCoorV As Variant
    lCoorD(0) = lInputData(I1, 2)
    lCoorD(1) = lInputData(I1, 3)
    lCoorD(2) = lInputData(I1, 4)
    lCoorV = lCoorD
    ' Вставляем текст
    Dim lAcadText As Object
    Set lAcadText = lAcadMS.AddText(CStr(lInputData(I1, 1)), lCoorV, CDbl(lInputData(I1, 5)))
    ' Задаем угол поворота (преобразуем в радианы)
    lAcadText.Rotation = CDbl(lInputData(I1, 6)) * WorksheetFunction.Pi / 180
  Next I1
  ' Освобождаем объекты
  Set lAcadMS = Nothing
  Set lAcadDoc = Nothing
  Set lAcadApp = Nothing
End Sub



А с командными методами развлекайтесь сами, мне не интересно то - что вообще никак нельзя контролировать)
Сергей812 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Как написать команду для вставки многих текстов с разным содержанием в разные места

Размещение рекламы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отображение точки вставки атрибутов у блока Cren .NET 1 10.10.2016 13:51
Как заставить прозрачную команду на ЛИСП возвращать значение 480725 LISP 10 17.06.2014 01:43
смещается точка вставки eugenmax AutoCAD 2 23.03.2011 09:31
Изменение точки вставки блока v_alex AutoCAD 5 10.04.2006 13:01
Как задать точку вставки элемента? Александер Программирование 24 24.10.2005 12:53