Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » AutoCAD VBA/LISP

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2

Открыть новую тему     Написать ответ в эту тему

Anton T

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Обсуждаем вопросы только по AutoCAD VBA/LISP
(программирование макросов, скриптов, пользовательских функций и т.п.).  
Приветствуются ссылки на ресурсы и справочную литературу по теме.

 
Рекомендуется к прочтению:
  • AfraLisp.net - полный справочний VBA/LISP на английском языке и примеры.
  • Сайт пользователей САПР под редакцией Виктора Ткаченко
  • AutoCAD и Проектирование
  • Первые шаги с VBA на AutoCAD]
     
    Примеры:
  • Программирование AutoCAD 200x на ActiveDwg - English
     
    Ссылки и другие ресурсы:
  • VBA for AutoCAD - English

  • Всего записей: 325 | Зарегистр. 12-04-2006 | Отправлено: 12:51 03-08-2006 | Исправлено: Anton T, 19:43 10-02-2007
    Anton T

    Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

    Всего записей: 325 | Зарегистр. 12-04-2006 | Отправлено: 13:51 04-08-2006 | Исправлено: Anton T, 15:21 23-06-2007
    Anton T

    Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

    Всего записей: 325 | Зарегистр. 12-04-2006 | Отправлено: 14:05 29-08-2006 | Исправлено: Anton T, 15:24 23-06-2007
    Anton T

    Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Почему AutoCAD 2006(русская версия) не работает текст по дуги?  
    Вот такой код:

    Код:
     
    (defun rtd (a) (* a (/ 180 pi)))         ;  radians to degrees
     
    (defun getarc (/ no_arc e0 e1)
    (setq no_arc T)
    (while no_arc
      (if (setq e0 (entsel "\nSelect arc: "))  
        (if (= (cdr (assoc 0 (setq e1 (entget (car e0))))) "ARC")
          (setq no_arc nil)
          (princ (strcat (cdr (assoc 0 e1)) ", Not an arc."))
        )                                    ;  end IF
        (princ " No object found.")
      )                                      ;  end IF
    )                                        ;  end WHILE
    (setq c1 (cdr (assoc 10 e1))             ;  center point
          r1 (cdr (assoc 40 e1))             ;  radius
          a0 (cdr (assoc 50 e1))             ;  start arc angle
          a1 (cdr (assoc 51 e1))             ;  end arc angle
          i1 (if (> a1 a0)                   ;  included angle
               (- a1 a0)
               (+ a1 (- (* pi 2) a0))
             )                               ;  end IF
          p1 (osnap (cadr e0) "end")         ;  start point pick
          p2 (polar c1 a1 r1)                ;  end point arc
    )                                        ;  end SETQ
    )                                        ;  end DEFUN
     
    (defun getset (/ h1 t1 n1 a2)
    (setq h1                                 ;  check current text style height
      (if (zerop (cdr (assoc 40 (tblsearch "style" (getvar "textstyle")))))
             (getdist p1 "\nHeight: ")       ;  text height
             nil                             ;  height defined by STYLE
      )                                      ;  end IF
          t1 (getstring T "\nText: ")        ;  text string
          n1 1                               ;  counter
          a2 (/ i1 (1- (strlen t1)))         ;  angle increment
    )                                        ;  end SETQ
    (if (< (distance p1 p2) 1.0E-8)          ;  clockwise?
      (setq o1 '-)                           ;  clockwise
      (setq o1 '+                            ;  counter-clockwise
            a1 a0
      )                                      ;  end SETQ
    )                                        ;  end IF
    (setvar "cmdecho" 0)                     ;  suppress command echo
    (setvar "highlight" 0)                   ;  suppress hightlighting
    (setvar "blipmode" 0)                    ;  suppress blips
    (repeat (strlen t1)                      ;  for each character
      (command "text" "c" p1)                ;  TEXT command
      (if h1 (command h1))
      (command ((eval o1) (rtd a1) 90) (substr t1 n1 1))
      (setq a1 ((eval o1) a1 a2)             ;  increment angle  
            n1 (1+ n1)                       ;  increment counter
            p1 (polar c1 a1 r1)              ;  increment text point
      )                                      ;  end SETQ
    )                                        ;  end REPEAT
    (setvar "cmdecho" 1)                     ;  enable command echo
    (setvar "highlight" 1)                   ;  enable hightlighting
    (setvar "blipmode" 1)                    ;  enable blips
    )                                        ;  end DEFUN
     
    (defun c:atext()
    (getarc)                                 ;  get the arc
    (getset)                                 ;  get the settings and draw text
    (prin1)                                  ;  quiet exit
    )                                        ;  end DEFUN
     

    После выбран дуги и выдает ошибку: "неверный тип аргумента: piont: nil"
    Хотя пробовал на Автокаде 2005 (англоязычная) все работает прекрасно, а вот руссификация 2006 нет?  
    Что можно исправить? Помогите, но срочно работы надо.

    Всего записей: 325 | Зарегистр. 12-04-2006 | Отправлено: 09:42 27-06-2007 | Исправлено: Anton T, 09:43 27-06-2007
    Anton T

    Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Подробнее...

    Всего записей: 325 | Зарегистр. 12-04-2006 | Отправлено: 16:16 29-06-2007
    ssv22

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Вопрос, можно сказать похожий: понадобилась небольшая прога ддля ACAD`a на VB. И вот не иог найти как записать макрос VBA, при выполнении интересующих меня действий!
    Ведь почти во всех приложениях, где используется VBA, есть такое средство!
    В основном я пишу для SoidWorks`a.
    Но пробовал и MSОффис и Corel ...
    Ведь удобно-же: вкл. Запись макроса, выполнил какле-то действие, посмотрел макрос в режиме отладки и все понятно становится...
     
    PS. ACAD2007  

    Всего записей: 106 | Зарегистр. 02-08-2005 | Отправлено: 23:31 14-12-2008
    Anton T

    Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    ssv22

    Цитата:
    И вот не иог найти как записать макрос VBA, при выполнении интересующих меня действий!
    Увы нет...

    Всего записей: 325 | Зарегистр. 12-04-2006 | Отправлено: 10:41 15-12-2008
    ssv22

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    ssv22  
     
    Цитата:И вот не иог найти как записать макрос VBA, при выполнении интересующих меня действий!  
    Увы нет...  

     
    Это печально

    Всего записей: 106 | Зарегистр. 02-08-2005 | Отправлено: 11:07 15-12-2008
    kolapap

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    (defun prof ( / dcl_id all dx dy)
    (alert "\nЖдите..  Программа загружается …")
    (setq dcl_id (load_dialog "C:\\Program Files\\AutoCAD 2009\\AcadLsp\\St_prof\\prof.dcl"))
    (new_dialog "prof" dcl_id)
    (action_tile "cancel" "(done_dialog 0)")
    (action_tile "accept" "( insertprof)")
    ; Имена изображений
    (setq all
      (list "001" "002" ))
    (start_list "names")
    (mapcar 'add_list all)
    (end_list)
    ; Отметка первого в списке имени
    (set_tile "names" "0")
    ; Размеры левого графического элемента
    (setq dx (dimx_tile "sld1") dy (dimy_tile "sld1"))
    ; Загрузка первого слайда
    (start_image "sld1")
    (slide_image 0 0 dx dy "My(001)")
    (end_image)
    ; Обработка выбора имени в списке
    (action_tile "names" "(change_s $value all dx dy)")
    (start_dialog)
    (unload_dialog dcl_id)
    ); defun slide
    ; Функция при нажатии на ОК!
    (defun insertprof()
    (alert "Кнопка ОК!")
    (setvar "CMDECHO" 0)
    (setq old_osmode (getvar "OSMODE"))
    (setvar "OSMODE" 0)
    (command "_-INSERT" "C:\\Program Files\AutoCAD 2009\AcadLsp\St_prof\Block\001")
    (alert "Фнкция вставки")
    (done_dialog 0)
    );
    ; Функция смены слайда
    (defun change_s (sn nlist x y / i name)
      (setq i (atoi sn) name (nth i nlist))
      ; Замена слайда
      (start_image "sld1")
      (fill_image 0 0 x y -2)
      (slide_image 0 0 x y (strcat "My(" name ")"))
      (end_image)
    );  
     
    При изпользовании _-insert все зависает???
    В чом ошибка?

    Всего записей: 45 | Зарегистр. 15-09-2007 | Отправлено: 19:41 12-04-2009
    NoLacIPa

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Доброго времени суток.
     
    Заранее сорри, если тему не туда вставил.
     
    Описание проблемы:
     
    есть пользовательсякая форма встроенная в документ АвтоКад 2005, на ней имееться ТекстБокс1. Я никогда не морочил себе голову и запускал ее из отладки и делал, что мне нужно. А теперь надо шефу показать и нужно чтоб при открытии данного документа форма выскакивала автоматически. Я когда то еще давно пользовал ВБА для Excel ну и по аналогии решил сделать так:
    в ThisDrawing вставил код
     
    Private Sub AcadDocument_Activate()
     
    UserForm1.Show
     
    End Sub
     
    Форма грузиться, но фокус на ТекстБокс не удаеться перевести (тоесть туда писать ни чего нельзя). Фокус передаеться либо в строку команд, либо вообще хрен знает куда. Я своим скудным умом думаю это из-за того что не все модули загружены... Вот что делать? Я уже чем только не спикулировал. Подкиньте идей, кто разбираеться...

    Всего записей: 3 | Зарегистр. 11-11-2009 | Отправлено: 18:29 11-11-2009
    dneprcomp



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    NoLacIPa
    И зачем же по два раза спрашивать? Уже ответили в  
    http://forum.ru-board.com/topic.cgi?forum=33&bm=1&topic=10739#1

    Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 20:16 12-11-2009
    PrWork1

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    kolapap
    (command "_-INSERT" "C:\\Program Files\AutoCAD 2009\AcadLsp\St_prof\Block\001")  
     
    Путь не верно; нужно снабдить вызов сомманд pause Для всех вводов пользователя;
    или проверять в цикле сист.перем . CMDACTIVE;
    лучше сначала закрыть диалог , а потом вствлять

    Всего записей: 582 | Зарегистр. 15-12-2005 | Отправлено: 23:09 12-11-2009
    andrej2005

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Привет! С помощью процедуры FileProcessing добавляю в чертеже новый атрибут в блоках "tab_kab4", но его не видно. Как с этим бороться?
     
    Public Sub FileProcessing(MainDoc As AxDbDocument)
        Dim MS As AcadModelSpace
        Set MS = MainDoc.ModelSpace
        Dim i As Integer
        Dim blokObj As AcadBlock
        Dim attributeObj As AcadAttribute
        Dim height As Double
        Dim mode As Long
        Dim prompt As String
        Dim insertionPoint(0 To 2) As Double
        Dim tag As String
        Dim value As String
        
        For i = 0 To MainDoc.Blocks.count
            Set blokObj = MainDoc.Blocks.Item(i)
            If blokObj.Name = "tab_kab4" Then
                ' Define the attribute definition
                height = 1#
                mode = acAttributeModeVerify
                prompt = "New Prompt"
                insertionPoint(0) = 5#: insertionPoint(1) = 5#: insertionPoint(2) = 0
                tag = "NEW_TAG"
                value = "New Value"
                ' Create the attribute definition object in model space
                Set attributeObj = MS.AddAttribute(height, mode, prompt, insertionPoint, tag, value)
                ZoomAll
            End If
        Next i
    End Sub

    Всего записей: 3 | Зарегистр. 03-04-2010 | Отправлено: 10:38 03-04-2010
    Alexikit

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    andrej2005
    Честно говоря давно не програмировала под ACAD, но у Вас нигде не вижу обновления, т.е функции object.Update

    Всего записей: 79 | Зарегистр. 01-04-2009 | Отправлено: 12:22 05-04-2010
    andrej2005

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Alexikit
     
    object.Update не помогает.

    Всего записей: 3 | Зарегистр. 03-04-2010 | Отправлено: 23:53 09-04-2010
    Alexikit

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    andrej2005
     атрибут всеже наверно надо добавлять блоку.  
    Т.е  
    Set attributeObj = blokObj.AddAttribute(height, mode, prompt, insertionPoint, tag, value)  

    Всего записей: 79 | Зарегистр. 01-04-2009 | Отправлено: 12:41 12-04-2010 | Исправлено: Alexikit, 12:41 12-04-2010
    andrej2005

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Правильное замечание, но я эту ошибку исправил давно, все равно не помогает. Перевел всю кухню на библиотеку AutoCad и атрибуты синхронизирую командой _attsync. Пока только так, другого решения не вижу.

    Всего записей: 3 | Зарегистр. 03-04-2010 | Отправлено: 13:54 12-04-2010
    yakuleb

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Нужен учебник по программированию для автокад 2009 на VBA...
    На русском языке есть что нибудь?

    Всего записей: 1 | Зарегистр. 14-10-2010 | Отправлено: 17:09 11-01-2011
    Rakh

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Странная работа VBA в Autocad 2011.  
    Поставил VBA (autocad2011vbaenabler64), загрузил проект, опробованный в Autocad 2005. Работает (если это можно так назвать), но… Появляющееся окно диалога (UserForm) неактивно. Для каждого элемента управления нужно два щелчка мышью: первый активирует окно,  второй – элемент управления (окно снова неактивно). С клавиатурой еще интереснее: надо щелкнуть в пределах окна, потом по рамке окна, после этого может сработать клавиша клавиатуры.
    Может, кто знает, в чем заковыка.

    Всего записей: 1 | Зарегистр. 28-05-2011 | Отправлено: 18:56 28-05-2011
    PrWork1

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    yakuleb
    В шапке есть "Первые шаги... "
    ТАм для 2000, но для изучения разницы вообще не будет.

    Всего записей: 582 | Зарегистр. 15-12-2005 | Отправлено: 23:43 09-07-2011
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 1 2

    Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » AutoCAD VBA/LISP


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru