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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Создание средней (осевой) линии или биссектрисы.

Создание средней (осевой) линии или биссектрисы.

Ответ
Поиск в этой теме
Непрочитано 02.05.2012, 13:49
Создание средней (осевой) линии или биссектрисы.
Astartes
 
Котло- и реакторостроение
 
Барнаул
Регистрация: 25.02.2010
Сообщений: 825

Приветствую.
Я знаю что есть два лиспа для решения подобной задачи. Это bi_line Александра Ривилиса, и Middle PolyLine (MPL) от VVA.
Оба лиспа работаю хорошо. Спасибо авторам.
Единственная "проблема", для того чтобы построить линию между двумя другими нужно первую и вторую линию выделять по отдельности.
Вопрос можно подработать лисп так, чтобы выделить две линии рамкой, затем Ентер, и средняя линия (биссектриса) готова? Или это невозможно?

Последний раз редактировалось Astartes, 03.05.2012 в 04:54.
Просмотров: 16591
 
Непрочитано 11.11.2012, 09:55
#41
bboysyndrom

инженер-конструктор
 
Регистрация: 07.12.2011
Уфа
Сообщений: 121


Спасибо, работает. Как изменить цвет средней линии (на 11, например), оставив слой и толщину исходных линий (послою)?

Последний раз редактировалось bboysyndrom, 11.11.2012 в 17:02.
bboysyndrom вне форума  
 
Автор темы   Непрочитано 12.11.2012, 05:14
#42
Astartes

Котло- и реакторостроение
 
Регистрация: 25.02.2010
Барнаул
Сообщений: 825


У меня тоже такая проблема возникала. Редко правда.Я все немог понять, из-за чего. А теперь понятно.
Astartes вне форума  
 
Непрочитано 13.11.2012, 09:45
#43
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Добавил в код #35 функцию _kpblc-linetype-load
Без проверки, но должно работать
Код:
[Выделить все]
  (defun C:BI_LINE  (/ x00 x01 x01 x02 x03 x04 x05 x06 x07 x08 x09 x0a x0b x0c x0d x0e _bm _cm)
   ;;; http://forum.dwg.ru/showthread.php?t=83128&page=2
   ;;; ADD VVA 2012-10-13 START
   (if (null (tblsearch "LTYPE" "ACAD_ISO04W100"))
   (_kpblc-linetype-load "ACAD_ISO04W100" nil)
     )
   ;;; ADD VVA 2012-10-13 END
  (setq _cm (getvar "CMDECHO")
        _bm (getvar "BLIPMODE"))
  (setvar "CMDECHO" 1)
  (setvar "BLIPMODE" 0)
  (while (progn (princ "\nВыберите отрезки или дуги, или сплайны...")
                (setq x00 (ssget '((-4 . "<or") (0 . "line") (0 . "arc") (0 . "spline") (-4 . "or>")))))
    (redraw (setq x01 (ssname x00 0)) 3)
    (redraw (setq x02 (ssname x00 (1- (sslength x00)))) 3)
    (setq x00 nil
          x05 (cdr (assoc 0 (setq x03 (entget x01))))
          x06 (cdr (assoc 0 (setq x04 (entget x02)))))
    (cond ((and (eq "LINE" x05) (eq "LINE" x06))
           (if (> (+ (distance (setq x05 (cdr (assoc 10 x03))) (setq x06 (cdr (assoc 10 x04))))
                     (distance (setq x03 (cdr (assoc 11 x03))) (setq x04 (cdr (assoc 11 x04)))))
                  (+ (distance x05 x04) (distance x03 x06)))
             (setq x00 x06
                   x06 x04
                   x04 x00))
           (cond ;;оотерзки пересекаются
                 ((setq x07 (inters x05 x03 x06 x04 t))
                  (setq x08 (max (distance x07 x05) (distance x07 x06))
                        x09 (max (distance x07 x03) (distance x07 x04))
                        x05 (polar x07 (angle x07 x05) x08)
                        x03 (polar x07 (angle x07 x03) x09)
                        x06 (polar x07 (angle x07 x06) x08)
                        x04 (polar x07 (angle x07 x04) x09)))
                 ;; пересекаются прямые, на которых лежат отрезки
                 ((setq x07 (inters x05 x03 x06 x04 nil))
                  (if (> (distance x07 x05) (distance x07 x03))
                    (setq x00 x05
                          x05 x03
                          x03 x00
                          x00 x06
                          x06 x04
                          x04 x00))
                  (setq x08 (min (distance x07 x05) (distance x07 x06))
                        x09 (max (distance x07 x03) (distance x07 x04))
                        x05 (polar x07 (angle x07 x05) x08)
                        x03 (polar x07 (angle x07 x03) x09)
                        x06 (polar x07 (angle x07 x06) x08)
                        x04 (polar x07 (angle x07 x04) x09))))
           (or (entmake (list '(0 . "LINE")
                              '(6 . "ACAD_ISO04W100")
                              '(370 . 20)
                              (cons 10 (trans (mapcar '* '(0.5 0.5 0.5) (mapcar '+ x05 x06)) 0 1))
                              (cons 11 (trans (mapcar '* '(0.5 0.5 0.5) (mapcar '+ x03 x04)) 0 1))))
               (princ "\nОтрезок не создан!")))
          ((and (eq "ARC" x05) (eq "ARC" x06))
           (or (entmake
                 (list '(0 . "ARC")
                       '(6 . "ACAD_ISO04W100")
                       '(370 . 20)
                       (cons 10
                             (trans (mapcar '* '(0.5 0.5 0.5) (mapcar '+ (cdr (assoc 10 x03)) (cdr (assoc 10 x04)))) 0 1))
                       (cons 40 (/ (+ (cdr (assoc 40 x03)) (cdr (assoc 40 x04))) 2))
                       (cons 50 (/ (+ (cdr (assoc 50 x03)) (cdr (assoc 50 x04))) 2))
                       (cons 51 (/ (+ (cdr (assoc 51 x03)) (cdr (assoc 51 x04))) 2))))
               (princ "\nДуга не создана!")))
          ((and (eq "SPLINE" x05) (eq "SPLINE" x06))
           (setq x00 (list (quote (setq x0b (append x0b (list (cons 40 (/ (+ (cdar (setq x03 (cdr x03))) (cdar (setq x04 (cdr x04)))) 2))))
                                        x0c (append x0c (list (cons 10 (polar x09 (angle x09 x0a) (/ x0e 2)))))
                                        x07 (cdr x07)
                                        x08 (cdr x08)
                                        x05 x09
                                        x06 x0a))
                           (quote (setq x0b (append x0b (list (cons 40 (/ (+ (cdar (setq x03 (cdr x03))) (cdar x04)) 2))))
                                        x0c (append x0c (list (cons 10 (polar x09 (angle x09 x06) (/ x0e 2)))))
                                        x07 (cdr x07)
                                        x05 x09))
                           (quote (setq x0b (append x0b (list (cons 40 (/ (+ (cdar x03) (cdar (setq x04 (cdr x04)))) 2))))
                                        x0c (append x0c (list (cons 10 (polar x05 (angle x05 x0a) (/ x0e 2)))))
                                        x08 (cdr x08)
                                        x06 x0a)))
                 x07 (member (setq x05 (assoc 10 x03)) x03)
                 x08 (member (setq x06 (assoc 10 x04)) x04)
                 x0b (list)
                 x03 (member (assoc 40 (setq x03 (reverse (member (assoc 40 (setq x03 (reverse x03))) x03)))) x03)
                 x04 (member (assoc 40 (setq x04 (reverse (member (assoc 40 (setq x04 (reverse x04))) x04)))) x04)
                 x05 (cdr x05)
                 x06 (cdr x06))
           (repeat 4
             (setq x0b (append x0b (list (cons 40 (/ (+ (cdar x03) (cdar x04)) 2))))
                   x03 (cdr x03)
                   x04 (cdr x04)))
           (and (> (distance x05 x06) (distance x05 (cdr (last x08))))
                (> (distance x05 x06) (distance (cdr (last x07)) x06))
                (setq x08 (reverse (cons (cons 10 x06) x08))
                      x06 (cdar x08)
                      x08 (cdr x08))) ;x04 (reverse x04)
           (setq x0b (append x0b (list (cons 40 (/ (+ (cdar x03) (cdar x04)) 2)))))
           (setq x0c (list (cons 10 (polar x05 (angle x05 x06) (/ (distance x05 x06) 2)))))
           (while (and (setq x09 (cdadr x07)) (setq x0a (cdadr x08)))
             (eval
               (nth (1-
                      (length
                        (member (setq x0e (apply 'min (setq x0d (list (distance x05 x0a) (distance x06 x09) (distance x09 x0a)))))
                                x0d)))
                    x00)))
           (setq x00 (cdar x03))
           (or x0a
               (setq x08 x07
                     x00 (cdar x04)
                     x04 x03
                     x0a x09
                     x05 x06))
           (repeat (length x08)
             (setq x0b (append x0b (list (cons 40 (/ (+ x00 (cdar x04)) 2))))
                   x0c (append x0c (list (cons 10 (polar x05 (angle x05 x0a) (/ (distance x05 x0a) 2)))))
                   x04 (cdr x04)
                   x08 (cdr x08)
                   x0a (cdar x08)))
           (or (entmake (append (quote ((0 . "SPLINE") (100 . "AcDbEntity")
                                                       (100 . "AcDbSpline") 
                                                       (6 . "ACAD_ISO04W100")
                                                       (370 . 20)
                                                       (70 . 8)
                                                       (71 . 3)))
                                (list (cons 72 (length x0b)) (cons 73 (length x0c)))
                                (quote ((74 . 0) (42 . 1.0e-10) (43 . 1.0e-10)))
                                x0b
                                x0c))
               (princ "\nСплайн не созданн!")))
          (t (princ "\nВыбраны примитивы разных типов!")))
    (redraw x01 4)
    (redraw x02 4))
  (setvar "BLIPMODE" _bm)
  (setvar "CMDECHO" _cm)
  (princ))
;|==================================================*===========================
*  LISP. Загрузка типа линии. Универсальная.
*  Кулик Алексей aka kpblc
*  URL: http://www.caduser.ru/forum/index.php?PAGE_NAME=read&FID=44&TID=22816
*    Функция подгрузки типа линии в текущий файл. Учитывает возможную
* локализацию системы.
*    Параметры вызова:
*  ltype-name  имя типа линии для английской версии
*  ltype-file  имя файла описания типа линии. nil -> "acadiso.lin"ю
*      Если файл с описанием типа линии не лежит по путям
*      поддержки када, надо указывать полный путь к нему.
*    Примеры вызова:
(_kpblc-linetype-load "center" nil)  ; для русской версии подгружает Осевая и возвращает
                                     ; t при успехе
***  Соответствие наименований линий обеспечивается огромным списком ltype_list
*** который можно и нужно дополнять :) Только надо либо все делать мелкими
*** буквами, либо жестко соблюдать регистр в моменты вызовов.
***  Тип линии "Continuous" обработке не подвергается - он есть во всех версиях
==================================================*===========================|;
    (defun _kpblc-linetype-load (ltype-name ltype-file / ltype_list)
      (vl-load-com)
      (or
        *kpblc-activedoc*
        (setq *kpblc-activedoc* (vla-get-activedocument (vlax-get-acad-object)))
        )
      (if (not (member (strcase ltype-name t)
                       '("continuous" "byblock" "bylayer")
               ) ;_ end of member
          ) ;_ end of not
        (progn
          (setq ltype_list '(("border" . "рант")
                             ("border2" . "рант2")
                             ("borderX2" . "рантX2")
                             ("center" . "осевая")
                             ("center2" . "осевая2")
                             ("centerX2" . "осеваяX2")
                             ("dashdot" . "штрихпунктирная")
                             ("dashdot2" . "штрихпунктирная2")
                             ("dashdotX2" . "штрихпунктирнаяX2")
                             ("dashed" . "штриховая")
                             ("dashed2" . "штриховая2")
                             ("dashedX2" . "штриховаяX2")
                             ("divide" . "линия_сгиба")
                             ("divide2" . "линия_сгиба2")
                             ("divideX2" . "линия_сгибаX2")
                             ("dot" . "пунктирная")
                             ("dot2" . "пунктирная2")
                             ("dotX2" . "пунктирнаяX2")
                             ("hidden" . "невидимая")
                             ("hidden2" . "невидимая2")
                             ("hiddenX2" . "невидимаяX2")
                             ("phantom" . "фантом")
                             ("phantom2" . "фантом2")
                             ("phantomX2" . "фантомX2")
                             ("fenceline1" . "ограждение1")
                             ("fenceline2" . "ограждение2")
                             ("tracks" . "пути")
                             ("batting" . "изоляция")
                             ("hot_water_supply" . "горячая_вода")
                             ("gas_line" . "газопровод")
                             ("zigzag" . "зигзаг")
                             ("byblock" . "byblock")
                             ("bylayer" . "bylayer")

                            )
                ltype-name (strcase ltype-name t)
          ) ;_ end of setq 
          (if (not ltype-file)
            (setq ltype-file "acadiso.lin")
          ) ;_ end of if 
          (if (assoc ltype-name ltype_list)
            (setq ltype-name
                   (if (vl-string-search "419" (vlax-product-key))
                     (cdr (assoc ltype-name ltype_list))
                     (car (assoc ltype-name ltype_list))
                   ) ;_ end of if 
            ) ;_ end of setq 
          ) ;_ end of if 
          (if (not (tblsearch "ltype" ltype-name))
            ;; тип линии не найден, надо его загрузить. Тип линии должен быть 
            ;; описан в файле 
            (vl-catch-all-error-p
              (vl-catch-all-apply
                'vla-load
                (list
                  (vlax-get-property
                    *kpblc-activedoc*
                    'linetypes
                  ) ;_ end of vlax-get-property 
                  ltype-name
                  ltype-file
                ) ;_ end of list 
              ) ;_ end of vl-catch-all-apply 
            ) ;_ end of vl-catch-all-error-p 
          ) ;_ end of if 
        ) ;_ end of progn 
      ) ;_ end of if
      (if (tblsearch "ltype" ltype-name)
        (vla-item (vla-get-linetypes *kpblc-activedoc*) ltype-name)
        (vla-item (vla-get-linetypes *kpblc-activedoc*)
                  "continuous"
        ) ;_ end of vla-item
      ) ;_ end of if
    ) ;_ end of defun
(princ "\nType BI_LINE in command line")(princ)
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 13.11.2012 в 14:16. Причина: Ошибки
VVA вне форума  
 
Автор темы   Непрочитано 13.11.2012, 10:00
#44
Astartes

Котло- и реакторостроение
 
Регистрация: 25.02.2010
Барнаул
Сообщений: 825


VVA, Ничего не поменялось. Если линия не загружена изначально, то лисп не работает.
При загрузке:
Команда: _appload
bi_line5.lsp успешно загружено.
Команда: ; ошибка: неверный тип аргумента: stringp nil
Astartes вне форума  
 
Непрочитано 13.11.2012, 14:18
#45
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Astartes, Я же честно написал

Цитата:
Сообщение от VVA Посмотреть сообщение
Без проверки, но должно работать
Так что соврал наполовину
Исправил #43 Пробуй снова
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 13.11.2012, 15:45
#46
Astartes

Котло- и реакторостроение
 
Регистрация: 25.02.2010
Барнаул
Сообщений: 825


VVA, Ну так я же без претензий.
Завтра проверю.
Astartes вне форума  
 
Непрочитано 14.11.2012, 13:58
#47
bboysyndrom

инженер-конструктор
 
Регистрация: 07.12.2011
Уфа
Сообщений: 121


может кто сделает этот лисп таким, что средняя линия будет обладать свойствами родительскими изменив лишь цвет, например на 11 из таблицы цветов? очень нужно, работаю в модели, оформляю в листе.
bboysyndrom вне форума  
 
Непрочитано 14.11.2012, 14:49
#48
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Цитата:
Сообщение от bboysyndrom Посмотреть сообщение
что средняя линия будет обладать свойствами родительскими изменив лишь цвет, например на 11
Код:
[Выделить все]
  (defun C:BI_LINE2  (/ x00 x01 x01 x02 x03 x04 x05 x06 x07 x08 x09 x0a x0b x0c x0d x0e _bm _cm)
   ;;; http://forum.dwg.ru/showthread.php?t=83128&page=2
    (vl-load-com)
  (setq _cm (getvar "CMDECHO")
        _bm (getvar "BLIPMODE"))
  (setvar "CMDECHO" 1)
  (setvar "BLIPMODE" 0)
  (while (progn (princ "\nВыберите отрезки или дуги, или сплайны...")
                (setq x00 (ssget '((-4 . "<or") (0 . "line") (0 . "arc") (0 . "spline") (-4 . "or>")))))
    (redraw (setq x01 (ssname x00 0)) 3)
    (redraw (setq x02 (ssname x00 (1- (sslength x00)))) 3)
    (setq x00 nil
          x05 (cdr (assoc 0 (setq x03 (entget x01))))
          x06 (cdr (assoc 0 (setq x04 (entget x02)))))
    (cond ((and (eq "LINE" x05) (eq "LINE" x06))
           (if (> (+ (distance (setq x05 (cdr (assoc 10 x03))) (setq x06 (cdr (assoc 10 x04))))
                     (distance (setq x03 (cdr (assoc 11 x03))) (setq x04 (cdr (assoc 11 x04)))))
                  (+ (distance x05 x04) (distance x03 x06)))
             (setq x00 x06
                   x06 x04
                   x04 x00))
           (cond ;;оотерзки пересекаются
                 ((setq x07 (inters x05 x03 x06 x04 t))
                  (setq x08 (max (distance x07 x05) (distance x07 x06))
                        x09 (max (distance x07 x03) (distance x07 x04))
                        x05 (polar x07 (angle x07 x05) x08)
                        x03 (polar x07 (angle x07 x03) x09)
                        x06 (polar x07 (angle x07 x06) x08)
                        x04 (polar x07 (angle x07 x04) x09)))
                 ;; пересекаются прямые, на которых лежат отрезки
                 ((setq x07 (inters x05 x03 x06 x04 nil))
                  (if (> (distance x07 x05) (distance x07 x03))
                    (setq x00 x05
                          x05 x03
                          x03 x00
                          x00 x06
                          x06 x04
                          x04 x00))
                  (setq x08 (min (distance x07 x05) (distance x07 x06))
                        x09 (max (distance x07 x03) (distance x07 x04))
                        x05 (polar x07 (angle x07 x05) x08)
                        x03 (polar x07 (angle x07 x03) x09)
                        x06 (polar x07 (angle x07 x06) x08)
                        x04 (polar x07 (angle x07 x04) x09))))
           (or (if(entmake (list '(0 . "LINE")
                             ; '(6 . "ACAD_ISO04W100")
                             ; '(370 . 20)
                              (cons 10 (trans (mapcar '* '(0.5 0.5 0.5) (mapcar '+ x05 x06)) 0 1))
                              (cons 11 (trans (mapcar '* '(0.5 0.5 0.5) (mapcar '+ x03 x04)) 0 1))))
                 (progn
             (mapcar
               '(lambda (x y) (vlax-put-property (vlax-ename->vla-object(entlast)) x y))
               '(Linetype LineWeight Color Layer)
               (mapcar
                 '(lambda (x)
                    (vlax-get-property (vlax-ename->vla-object x01) x))
                 '(Linetype LineWeight Color Layer)))
             (vla-put-Color (vlax-ename->vla-object(entlast)) 11) ;_Цвет номер 13
             )
                 )
               (princ "\nОтрезок не создан!")))
          ((and (eq "ARC" x05) (eq "ARC" x06))
           (or
              (if(entmake
                 (list '(0 . "ARC")
                    ;   '(6 . "ACAD_ISO04W100")
                    ;   '(370 . 20)
                       (cons 10
                             (trans (mapcar '* '(0.5 0.5 0.5) (mapcar '+ (cdr (assoc 10 x03)) (cdr (assoc 10 x04)))) 0 1))
                       (cons 40 (/ (+ (cdr (assoc 40 x03)) (cdr (assoc 40 x04))) 2))
                       (cons 50 (/ (+ (cdr (assoc 50 x03)) (cdr (assoc 50 x04))) 2))
                       (cons 51 (/ (+ (cdr (assoc 51 x03)) (cdr (assoc 51 x04))) 2))))
                (progn
             (mapcar
               '(lambda (x y) (vlax-put-property (vlax-ename->vla-object(entlast)) x y))
               '(Linetype LineWeight Color Layer)
               (mapcar
                 '(lambda (x)
                    (vlax-get-property (vlax-ename->vla-object x01) x))
                 '(Linetype LineWeight Color Layer)))
             (vla-put-Color (vlax-ename->vla-object(entlast)) 11) ;_Цвет номер 13
             )
                )
               (princ "\nДуга не создана!")))
          ((and (eq "SPLINE" x05) (eq "SPLINE" x06))
           (setq x00 (list (quote (setq x0b (append x0b (list (cons 40 (/ (+ (cdar (setq x03 (cdr x03))) (cdar (setq x04 (cdr x04)))) 2))))
                                        x0c (append x0c (list (cons 10 (polar x09 (angle x09 x0a) (/ x0e 2)))))
                                        x07 (cdr x07)
                                        x08 (cdr x08)
                                        x05 x09
                                        x06 x0a))
                           (quote (setq x0b (append x0b (list (cons 40 (/ (+ (cdar (setq x03 (cdr x03))) (cdar x04)) 2))))
                                        x0c (append x0c (list (cons 10 (polar x09 (angle x09 x06) (/ x0e 2)))))
                                        x07 (cdr x07)
                                        x05 x09))
                           (quote (setq x0b (append x0b (list (cons 40 (/ (+ (cdar x03) (cdar (setq x04 (cdr x04)))) 2))))
                                        x0c (append x0c (list (cons 10 (polar x05 (angle x05 x0a) (/ x0e 2)))))
                                        x08 (cdr x08)
                                        x06 x0a)))
                 x07 (member (setq x05 (assoc 10 x03)) x03)
                 x08 (member (setq x06 (assoc 10 x04)) x04)
                 x0b (list)
                 x03 (member (assoc 40 (setq x03 (reverse (member (assoc 40 (setq x03 (reverse x03))) x03)))) x03)
                 x04 (member (assoc 40 (setq x04 (reverse (member (assoc 40 (setq x04 (reverse x04))) x04)))) x04)
                 x05 (cdr x05)
                 x06 (cdr x06))
           (repeat 4
             (setq x0b (append x0b (list (cons 40 (/ (+ (cdar x03) (cdar x04)) 2))))
                   x03 (cdr x03)
                   x04 (cdr x04)))
           (and (> (distance x05 x06) (distance x05 (cdr (last x08))))
                (> (distance x05 x06) (distance (cdr (last x07)) x06))
                (setq x08 (reverse (cons (cons 10 x06) x08))
                      x06 (cdar x08)
                      x08 (cdr x08))) ;x04 (reverse x04)
           (setq x0b (append x0b (list (cons 40 (/ (+ (cdar x03) (cdar x04)) 2)))))
           (setq x0c (list (cons 10 (polar x05 (angle x05 x06) (/ (distance x05 x06) 2)))))
           (while (and (setq x09 (cdadr x07)) (setq x0a (cdadr x08)))
             (eval
               (nth (1-
                      (length
                        (member (setq x0e (apply 'min (setq x0d (list (distance x05 x0a) (distance x06 x09) (distance x09 x0a)))))
                                x0d)))
                    x00)))
           (setq x00 (cdar x03))
           (or x0a
               (setq x08 x07
                     x00 (cdar x04)
                     x04 x03
                     x0a x09
                     x05 x06))
           (repeat (length x08)
             (setq x0b (append x0b (list (cons 40 (/ (+ x00 (cdar x04)) 2))))
                   x0c (append x0c (list (cons 10 (polar x05 (angle x05 x0a) (/ (distance x05 x0a) 2)))))
                   x04 (cdr x04)
                   x08 (cdr x08)
                   x0a (cdar x08)))
           
           (or
             (if
             (entmake (append (quote ((0 . "SPLINE") (100 . "AcDbEntity")
                                                       (100 . "AcDbSpline") 
                                                      ; (6 . "ACAD_ISO04W100")
                                                      ; (370 . 20)
                                                       (70 . 8)
                                                       (71 . 3)))
                                (list (cons 72 (length x0b)) (cons 73 (length x0c)))
                                (quote ((74 . 0) (42 . 1.0e-10) (43 . 1.0e-10)))
                                x0b
                                x0c))
             (progn
             (mapcar
               '(lambda (x y) (vlax-put-property (vlax-ename->vla-object(entlast)) x y))
               '(Linetype LineWeight Color Layer)
               (mapcar
                 '(lambda (x)
                    (vlax-get-property (vlax-ename->vla-object x01) x))
                 '(Linetype LineWeight Color Layer)))
             (vla-put-Color (vlax-ename->vla-object(entlast)) 11) ;_Цвет номер 13
             )
             )
               (princ "\nСплайн не созданн!")))
          (t (princ "\nВыбраны примитивы разных типов!")))
    (redraw x01 4)
    (redraw x02 4))
  (setvar "BLIPMODE" _bm)
  (setvar "CMDECHO" _cm)
  (princ))
(princ "\nType BI_LINE2 in command line")(princ)
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 14.11.2012 в 19:48.
VVA вне форума  
 
Непрочитано 14.11.2012, 18:15
#49
bboysyndrom

инженер-конструктор
 
Регистрация: 07.12.2011
Уфа
Сообщений: 121


Подозреваю, что пристроили функцию, которая изменяет свойства средней линии с " тип линии ACAD_ISO..., толщина 0.2" на "послою, послою, цвет11"? Неужели нельзя все проще сделать?
Объясните, что происходит в этих строках?

(or (entmake (list '(0 . "LINE") ---???
'(6 . "ACAD_ISO04W100") ---???
'(370 . 20) ---???
(cons 10 (trans (mapcar '* '(0.5 0.5 0.5) (mapcar '+ x05 x06)) 0 1))
(cons 11 (trans (mapcar '* '(0.5 0.5 0.5) (mapcar '+ x03 x04)) 0 1))))
bboysyndrom вне форума  
 
Непрочитано 14.11.2012, 19:50
#50
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


bboysyndrom,Если это про #48, то не правильно подозреваешь

Цитата:
Сообщение от bboysyndrom Посмотреть сообщение
Объясните, что происходит в этих строках?
Создается линия, остальное нужно было убрать либо закоментировать
Исправил #48
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 15.11.2012, 09:24
#51
bboysyndrom

инженер-конструктор
 
Регистрация: 07.12.2011
Уфа
Сообщений: 121


А как теперь сделать возможность выбора цвета при выполнении команды и свойством цвета ПоСлою по умолчанию?

(_bi_line2 --- Выберите цвет<ПоСлою"по умолчанию">)

Нужно это при проектировании трубопроводов: Ду150 и более - осевая линия(цвет 11), Ду100 и менее - жирная основная линия (цвет красный).
bboysyndrom вне форума  
 
Автор темы   Непрочитано 15.11.2012, 11:31
#52
Astartes

Котло- и реакторостроение
 
Регистрация: 25.02.2010
Барнаул
Сообщений: 825


bboysyndrom, А слоями не пользуешся? Создай слой Ду150 дай ему цвет 11. Потом воспользуйся функцией изоляция слоя и проставляй осевые. Зачем это все прописывать в программе?
Хотя я может чегото и не понимаю.
Astartes вне форума  
 
Непрочитано 16.11.2012, 13:36
#53
bboysyndrom

инженер-конструктор
 
Регистрация: 07.12.2011
Уфа
Сообщений: 121


Слои использую как линии трубопроводов, по продукту (Гудрон, например). Цвета определяют стиль линий при печати (например, 11 - осевая, красный - жирная, белый - тонкая).

Кто способен, просьба настроить этот Lisp, чтобы
- при запуске функции был запрос(меню):

Выберите линии, дуги... или [Цвет(11, 5 и т.д.)/реЖим(удалять исходные, оставлять исходные)] <Цвет>:

т.е. была возможность выбора цвета и режима.

Помогите начинающему инженеру в создании этого лиспа, кто может =)
bboysyndrom вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Создание средней (осевой) линии или биссектрисы.

Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание нового типа линий Apelsinov AutoCAD 915 08.07.2022 12:36
Создание линии типа "_______текст_______ " с возможностью изменение текста xabraxabra AutoCAD 18 03.10.2011 02:35
LISP Создание осевой линии для 3Dsolids nem LISP 7 19.10.2010 12:42