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

Вернуться   Форум DWG.RU > Поиск литературы, чертежей, моделей и прочих материалов > САПР на базе AutoCAD - как это делается

САПР на базе AutoCAD - как это делается

Ответ
Поиск в этой теме
Непрочитано 17.03.2008, 13:18
САПР на базе AutoCAD - как это делается
Zap
 
Регистрация: 17.03.2008
Сообщений: 4

Здравствуйте, форумчане. В разделе "Книги" предлагается книга "САПР на базе AutoCAD - как это делается" (со ссылкой на Озон). Хочется заказать, есть возможность раскрутить на это шефа но прежде хочу спросить мнение о ней тех, кто ей пользуется. Полезна ли эта книга, хорошо ли в ней описаны методы? Пригодится ли она проектировщику-электрику (например, для создания САПР на основе AutoCAD Electrical)?
Просмотров: 33986
 
Непрочитано 10.03.2020, 11:32
#81
azmt


 
Регистрация: 02.04.2011
Уфа
Сообщений: 80


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
К сожалению так и не нашлось времени закончить продолжение про программирование в 3D.
Интересно, как вы задвижки в 3D рисуете программно в Автокаде.
azmt вне форума  
 
Непрочитано 10.03.2020, 13:26
#82
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381


Цитата:
Сообщение от azmt Посмотреть сообщение
Интересно, как вы задвижки в 3D рисуете программно в Автокаде.
Да очень просто. Функция

Код:
[Выделить все]
 (defun ru-3d-valve-gate-simple (flange_param_lst  l  h   d_handwheel    /   lst_points     old_ucs_icon                      )
  (ru-app-begin)
  (if (setq lst_points
             (ru-3d-get-two-points-and-normal-with-last-vectors
               "Начало изделия"            "Направление конца изделия"
               "Направление верха изделия" "Высота"
               100
              ) 
      ) 
    (progn
      (setq old_ucs_icon (ru-ucs-icon-hide)) 
      (ru-3d-valve-gate-simple-draw
        (car lst_points)
        (cadr lst_points)
        (caddr lst_points)
        flange_param_lst
        l
        h
        d_handwheel
      ) 
      (setvar "UCSICON" old_ucs_icon)
    ) 
  ) 
  (ru-app-end)
  (princ)
) 
В меню:

Код:
[Выделить все]
(ru-3d-valve-gate-simple  (ru-3d-pipe-flange-std-150-16)  280.0 720 240)
ShaggyDoc вне форума  
 
Непрочитано 11.03.2020, 07:05
#83
azmt


 
Регистрация: 02.04.2011
Уфа
Сообщений: 80


Спасибо, я имел в виду "как" с точки зрения алгоритма. Просто в книжке из топика я про 3D не нашёл, чтобы исходники посмотреть.
Например, как вы корпус задвижки рисуете? В виде какой-то поверхности каждый раз при вставке. Или у вас 3D задвижка это набор дин блоков и вы просто настраиваете их во время вставки.
azmt вне форума  
 
Непрочитано 11.03.2020, 09:25
#84
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381


Цитата:
Сообщение от azmt Посмотреть сообщение
Спасибо, я имел в виду "как" с точки зрения алгоритма. Просто в книжке из топика я про 3D не нашёл, чтобы исходники посмотреть.
Например, как вы корпус задвижки рисуете? В виде какой-то поверхности каждый раз при вставке. Или у вас 3D задвижка это набор дин блоков и вы просто настраиваете их во время вставки.
В книжке про 3D и нет ничего. Но там концепция:
1. Конечная программа-функция должна быть максимально простой. Внутри ее используются библиотечные функции, которые применяются многократно в самых разных программах. Для 3D их 398 шт, да еще 1398 общих для 2D и 3D.

2. В функциях также используются вложенные функции. При необходиости изменяется только одна функция, но при этом изменится поведение десятков программ.

Никакие динамические блоки не используются, всё делается солидами - корпус, фланец, маховик и т.п., которые объединяются в один.

Есть вариант, когда какая-то частичка хранится в библиотечном единичном блоке, но он потом также объединяется в изделие.
В показанном примере есть функция ru-3d-valve-gate-simple-draw. Она выглядит так:
Код:
[Выделить все]
 (defun ru-3d-valve-gate-simple-draw (start_pnt pnt_on_trass pnt_on_top  flange_param_lst  l  h d_handwheel  /   pnt_start_seal solid  solid_2  vector_normal vector_top  vector_trass body_line_height_from_center  dn height_top_oval BODY_LEN  BODY_TOP_FROM_CENTER  BODY_WIDTH D_FLANGE END_SEAL_WIDTH START_SEAL_WIDTH)
  (setq
    vector_trass (ru-3d-vector-by-2-points start_pnt pnt_on_trass)
    vector_top (ru-3d-vector-by-2-points start_pnt pnt_on_top)
    vector_normal (ru-3d-vector-normal-to-plane  start_pnt pnt_on_trass  pnt_on_top) 
    dn (ru-3d-pipe-flange-dn-pipe flange_param_lst)
    d_flange (ru-3d-pipe-flange-d-flange flange_param_lst)
    body_line_height_from_center(* d_flange 0.8)
    body_len (* l 0.5)
    body_width  d_flange
    start_seal_width(* h 0.2)
    end_seal_width (* h 0.1)
    height_top_oval (* body_width 0.5)body_top_from_center (+ body_line_height_from_center  height_top_oval)  pnt_start_seal
     ;; начало надо привязать к верху корпуса
     ;; а верх корпуса (* d_flange 1.1) + dn dn
     (ru-3d-point-by-point-vector-and-dist (ru-3d-point-by-point-vector-and-dist start_pnt vector_trass (/ l 2.0))        vector_top body_top_from_center) 

  ) 

  ;; Корпус
  (setq solid (ru-3d-valve-gate-body start_pnt  pnt_on_trass  pnt_on_top flange_param_lst l body_len body_width          0.3  body_line_height_from_center) 
         solid_2 (ru-3d-valve-seal-and-wheel pnt_start_seal vector_trass vector_top vector_normal (- h body_top_from_center) start_seal_width    end_seal_width d_handwheel) 
  ) 
  (vla-boolean solid acunion solid_2 ) 
  solid
)
В ней используются еще 10 вложенных функций ru-3D-хххх, а каждая из них тоже может иметь вложения.
Например рисование корпуса
Код:
[Выделить все]
 (defun ru-3d-valve-gate-body (start_pnt          pnt_on_trass  pnt_on_top         flange_param_lst  l    body_len  body_width  rad_relative   body_line_height_from_center /  body_line_bottom_from_center  body_line_height  body_rad  center_pnt dn    d_flange           end_pnt   h_vist             list_solids  pnt_bottom_body    pnt_on_bottom   pnt_top_body_line       solid   solid_2            s_flange    vector_top         vector_trass)

  ;; Корпус задвижки  
  (setq
    dn (ru-3d-pipe-flange-dn-pipe flange_param_lst)
    s_flange (ru-3d-pipe-flange-h-flange flange_param_lst)
    d_flange (ru-3d-pipe-flange-d-flange flange_param_lst)
    h_vist (ru-3d-pipe-flange-h-vist flange_param_lst)
    vector_trass (ru-3d-vector-by-2-points start_pnt pnt_on_trass)
    vector_top (ru-3d-vector-by-2-points start_pnt pnt_on_top)
	center_pnt  (ru-3d-point-by-point-vector-and-dist start_pnt vector_trass(/ l 2.0)) 
    end_pnt (ru-3d-point-by-point-vector-and-dist start_pnt  vector_trass l ) 
    body_line_bottom_from_center 0.0
    body_line_height (- body_line_height_from_center body_line_bottom_from_center)
    body_rad (* body_len rad_relative)
    pnt_on_bottom (ru-3d-point-by-point-vector-and-dist center_pnt vector_top (- dn)) 
	 pnt_bottom_body (ru-3d-point-by-point-vector-and-dist center_pnt vector_top (- body_line_bottom_from_center)) 
    pnt_top_body_line (ru-3d-point-by-point-vector-and-dist center_pnt vector_top  body_line_height_from_center) 
  )
  ;; Основной проход корпуса
  ;; здесь диаметр надо больше чем у трубы
  (setq solid (ru-3d-pipe-line-draw start_pnt end_pnt (list (* dn 1.05) (* dn 0.1))) 
        list_solids  (ru-3d-pipe-2-flangeonly-draw-revolved  start_pnt   end_pnt    flange_param_lst ) ) 
  (vla-boolean  solid acunion (car list_solids)) 
  (vla-boolean solid  acunion (cadr list_solids)) 
  (setq list_solids(ru-3d-pipe-2-flange-valves-draw start_pnt end_pnt flange_param_lst  t ) ) 
  (vla-boolean solid acunion  (car list_solids)) 
  (vla-boolean solid acunion (cadr list_solids)) 
  
  (setq solid_2 (ru-3d-draw-oval-solid
                  pnt_bottom_body (ru-3d-point-by-point-vector-and-dist pnt_bottom_body  vector_trass  body_len ) 
                  pnt_on_bottom body_width  body_len  body_line_height body_rad )
  )
  (vla-boolean solid acunion solid_2 ) 
  
  (setq solid_2 (ru-3d-half-oval-body
                  pnt_top_body_line  (ru-3d-point-by-point-vector-and-dist  pnt_top_body_line vector_trass l ) 
                  (ru-3d-point-by-point-vector-and-dist  pnt_top_body_line vector_top  l ) 
                  body_width  body_len body_rad ) 
  ) 
  (vla-boolean solid  acunion solid_2 ) 
  ;;Низ
   
  (setq solid_2
         (ru-3d-half-oval-body   pnt_bottom_body (ru-3d-point-by-point-vector-and-dist pnt_bottom_body vector_trass l ) 
           pnt_on_bottom body_width  body_len body_rad )
  ) 
  (vla-boolean  solid acunion solid_2) 
 
  (setq solid_2
         (ru-3d-draw-oval-solid
           ;; Фланец корпуса верхний
           pnt_top_body_line (ru-3d-point-by-point-vector-and-dist pnt_top_body_line vector_trass body_len ) 
           pnt_on_bottom  (+ body_width s_flange s_flange)
           ;; поперек трубы
           (+ body_len s_flange s_flange)
           ;; вдоль трубы
           s_flange
           ;; высота
           (* (+ body_len s_flange s_flange) rad_relative)
           ;;Радиус
         ) 
  ) 
  (vla-boolean solid  acunion solid_2 ) 
  (setq solid_2
         (ru-3d-draw-oval-solid
           (ru-3d-point-by-point-vector-and-dist pnt_top_body_line  vector_top (-  (+ s_flange h_vist h_vist))) 
           (ru-3d-point-by-point-vector-and-dist  (ru-3d-point-by-point-vector-and-dist   pnt_top_body_line vector_top (-  (+ s_flange h_vist h_vist)))   vector_trass  body_len )
           pnt_on_bottom  (+ body_width s_flange s_flange)  (+ body_len s_flange s_flange)
           s_flange (* (+ body_len s_flange s_flange) rad_relative)) 
  ) 
  (vla-boolean  solid    acunion solid_2 )   
  solid 
  ) 
Всё делается объектными методами, получаемые отдельные солиды постепенно объединяются в один.
ShaggyDoc вне форума  
Ответ
Вернуться   Форум DWG.RU > Поиск литературы, чертежей, моделей и прочих материалов > САПР на базе AutoCAD - как это делается

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как работать с поверхностью? Как сделать в autocad скатерть? eclipse AutoCAD 34 28.10.2010 00:43
Предложение: Готовые функции Apelsinov Библиотека функций 170 27.06.2010 23:51
Новый драйвер для Phantom AutoCAD OLE/ADI Printer. Как? CyberMan AutoCAD 4 26.04.2009 10:19
БРЕД СИВОЙ КОБЫЛЫ Kryaker Разное 1876 29.12.2006 23:41
Одна из целей: Создание экспертных систем на базе AutoCAD. Сергей Юрьевич Программирование 9 01.01.2005 15:17