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

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

Не получается создать примитив с расширенными данными

Ответ
Поиск в этой теме
Непрочитано 07.12.2010, 15:28 #1
Не получается создать примитив с расширенными данными
Mozgunov
 
Начинающий проектировщик
 
Санкт-Петербург
Регистрация: 07.02.2008
Сообщений: 443

Не получается создать размер с расширенными данными. Помогите найти ошибку... Спасибо!

Код:
[Выделить все]
(entmake (list
'(0 . "DIMENSION")
'(100 . "AcDbEntity")
'(100 . "AcDbDimension")
(cons 10 (list (+(car ptv) (* mashtab 30)) (- (cadr ptv) (* mashtab 25.0)) 0.0)) ;позиция размерной линии
(cons 11 (list (+(car ptv) (* mashtab 37)) (- (cadr ptv) (* mashtab 25.0)) 0.0)) ; позиция текста относительно его вставки
'(70 . 0); тип измерения: 0 - rotated
'(53 . 0.0) ;позиция текста относительно размерной
'(3 . "Detali");стиль
'(8 . "Detali_dim")
(cons 1  (itoa s_hvost))
'(100 . "AcDbAlignedDimension")
(cons 13 (list (+(car ptv) (* mashtab 30)) (- (cadr ptv) (* mashtab 18.0)) 0.0))
(cons 14 (list (+(car ptv) (* mashtab 37)) (- (cadr ptv) (* mashtab 18.0)) 0.0))
'(50 . 0) ;угол наклона размера 0.0 - гориз., 1.5708 - вертик.

'(100 . "AcDbRotatedDimension")
'(210 0.0 0.0 1.0)

 (list -3 (list "ACAD"
   (cons 1000 "DSTYLE" )
   (cons 1002 "{" )   
   (cons 1040 10)
   (cons 1002 "}" ) 
  )) 
  
             ) ;_ end of list
) ;_ end of entmake

Всё спасибо я разобрался. Нужно группу в самое начало переместить, тогда всё создаётся. Можно наверное удалить тему. Если никто не против конечно

Последний раз редактировалось Mozgunov, 07.12.2010 в 16:16.
Просмотров: 3555
 
Непрочитано 07.12.2010, 16:19
#2
Лиспер


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


Какую группу в какое начало?
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
 
Автор темы   Непрочитано 07.12.2010, 19:46
#3
Mozgunov

Начинающий проектировщик
 
Регистрация: 07.02.2008
Санкт-Петербург
Сообщений: 443
<phrase 1=


Группу с кодом "-3"
Код:
[Выделить все]
(entmake (list

 (list -3 (list "ACAD"
   (cons 1000 "DSTYLE" )
   (cons 1002 "{" )   
   (cons 1040 10)
   (cons 1002 "}" ) 
  )) 

'(0 . "DIMENSION")
'(100 . "AcDbEntity")
'(100 . "AcDbDimension")
(cons 10 (list (+(car ptv) (* mashtab 30)) (- (cadr ptv) (* mashtab 25.0)) 0.0)) ;позиция размерной линии
(cons 11 (list (+(car ptv) (* mashtab 37)) (- (cadr ptv) (* mashtab 25.0)) 0.0)) ; позиция текста относительно его вставки
'(70 . 0); тип измерения: 0 - rotated
'(53 . 0.0) ;позиция текста относительно размерной
'(3 . "Detali");стиль
'(8 . "Detali_dim")
(cons 1  (itoa s_hvost))
'(100 . "AcDbAlignedDimension")
(cons 13 (list (+(car ptv) (* mashtab 30)) (- (cadr ptv) (* mashtab 18.0)) 0.0))
(cons 14 (list (+(car ptv) (* mashtab 37)) (- (cadr ptv) (* mashtab 18.0)) 0.0))
'(50 . 0) ;угол наклона размера 0.0 - гориз., 1.5708 - вертик.

'(100 . "AcDbRotatedDimension")
'(210 0.0 0.0 1.0)
  
             ) ;_ end of list
) ;_ end of entmake
Mozgunov вне форума  
 
Непрочитано 07.12.2010, 22:58
#4
Кулик Алексей aka kpblc
Moderator

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


А не проще ли будет создавать размер через ActiveX?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 07.12.2010, 23:56
#5
Mozgunov

Начинающий проектировщик
 
Регистрация: 07.02.2008
Санкт-Петербург
Сообщений: 443
<phrase 1=


Кулик Алексей aka kpblc, Алексей помнишь я как-то задавал тебе вопрос про масштабы СПДС. Так вот я что-то не додумал там. Вернее никак у меня не получалось на размерах СПДСовский масштаб менять. Вот теперь получилось путём привязки в расширенные данные пары (1040 . mashtab). Так что вопрос вроде бы решился... Да наверное проще, раз ты говоришь, но я не одной функции ActiveX не знаю. Пока так, а там разберусь...

P.S. И с засечкой одиночной не получается. Функция твоя почему-то nil возвращает. Но если даже блок есть в чертеже, то при прорисовке размера вместо блока засечки пустота... И все созданные примитивы не выделить не удалить с чертежа. Не знаю почему такая штука, но вот так (((
Mozgunov вне форума  
 
Непрочитано 08.12.2010, 10:54
#6
Лиспер


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


Одиночная засечка - это не _oblique часом? По идее при создании размера (или стиля - не особо важно) сначала надо создать соответствующие блоки. В том числе и _None. Здесь намного проще будет использовать (setvar "dimblk" <ЛяЛяЛя>), чем пытаться сделать что-то другое.
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
 
Автор темы   Непрочитано 08.12.2010, 11:30
#7
Mozgunov

Начинающий проектировщик
 
Регистрация: 07.02.2008
Санкт-Петербург
Сообщений: 443
<phrase 1=


Да она самая. Делаю вот так (предварительно сделав (SETVAR "DIMBLK" "_oblique") чтобы появился блок засечки) при создании размерного стиля:
Код:
[Выделить все]
(cons 342 (tblobjname "block" "_oblique"))
(cons 343 (tblobjname "block" "_oblique"))
(cons 344 (tblobjname "block" "_oblique"))
Но ничего не получается (((
Вот полностью код:
Код:
[Выделить все]
(setq dims (getvar "DIMBLK"))
(SETVAR "DIMBLK" "_oblique")
(entmakex (list
            (cons 0 "DIMSTYLE")
            (cons 100 "AcDbSymbolTableRecord")
            (cons 100 "AcDbDimStyleTableRecord")
            (cons 2 "Detali")
            (cons 70 0)
            (cons 40 1.0) ;dimscale 
            (cons 41 2.5) ;dimsz    
            (cons 42 0.625) ;dimexo   
            (cons 43 3.75) ;dimdli    
            (cons 44 1.25) ;dimexe    
            (cons 45 0.5) ;dimrnd   
            (cons 46 0.0) ;dimdle   
            (cons 140 2.5) ;dimtxt    
            (cons 141 -2.5) ;dimcen   
            (cons 143 0.005) ;dimaltf 
            (cons 145 0) ;dimtvp
            (cons 147 0.5) ;dimgap    
            (cons 72 0) ;dimlim
            (cons 73 0) ;dimtih   
            (cons 74 0) ;dimtoh   
            (cons 77 1) ;dimtad   
            (cons 78 8) ;dimzin   
            (cons 79 2) ;dimazin  
            (cons 170 0) ;dimalt
            (cons 172 1) ;dimtofl 
            (cons 173 0) ;dimsah    
            (cons 174 0) ;dimtix
            (cons 175 1) ;dimsoxd
            (cons 176 0) ;dimclrd
            (cons 177 0) ;dimclre
            (cons 178 0) ;dimclrt
            (cons 179 1) ;dimadec
            (cons 271 0) ;dimdec    
            (cons 272 0) ;dimtdec 
            (cons 275 1) ;dimaunit
            (cons 277 2) ;dimlunit
            (cons 278 44) ;dimdsep  
            (cons 279 0) ;dimtmove
            (cons 280 0) ;dimjust
            (cons 281 0) ;dimsd1
            (cons 282 0) ;dimsd2
            (cons 283 0) ;dimtolj
            (cons 284 8) ;dimtzin
            (cons 288 0) ;dimupt
            (cons 340 (tblobjname "style" (getvar "textstyle"))) ;dimtxtsty 
			(cons 342 (tblobjname "block" "_oblique"))
			(cons 343 (tblobjname "block" "_oblique"))
			(cons 344 (tblobjname "block" "_oblique"))
            (cons 371 -2) ;dimlwd
            (cons 372 -2) ;dimlwe
            ) ;_ end of list
          ) ;_ end of setq
(SETVAR "DIMBLK" dims)

Последний раз редактировалось Mozgunov, 08.12.2010 в 11:43.
Mozgunov вне форума  
 
Непрочитано 08.12.2010, 11:52
#8
Лиспер


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


Код:
[Выделить все]
(defun test (/ res dims)
  (setq dims (cond
               ((/= "" (getvar "DIMBLK")) "_none")
               (t (getvar "dimblk"))
               ) ;_ end of cond
        ) ;_ end of setq
  (setvar "DIMBLK" "_oblique")
  (setq res (entmakex
              (list
                (cons 0 "DIMSTYLE")
                (cons 100 "AcDbSymbolTableRecord")
                (cons 100 "AcDbDimStyleTableRecord")
                (cons 2 "Detali")
                (cons 70 0)
                (cons 40 1.0)           ;dimscale 
                (cons 41 2.5)           ;dimsz    
                (cons 42 0.625)         ;dimexo   
                (cons 43 3.75)          ;dimdli    
                (cons 44 1.25)          ;dimexe    
                (cons 45 0.5)           ;dimrnd   
                (cons 46 0.0)           ;dimdle   
                (cons 140 2.5)          ;dimtxt    
                (cons 141 -2.5)         ;dimcen   
                (cons 143 0.005)        ;dimaltf 
                (cons 145 0)            ;dimtvp
                (cons 147 0.5)          ;dimgap    
                (cons 72 0)             ;dimlim
                (cons 73 0)             ;dimtih   
                (cons 74 0)             ;dimtoh   
                (cons 77 1)             ;dimtad   
                (cons 78 8)             ;dimzin   
                (cons 79 2)             ;dimazin  
                (cons 170 0)            ;dimalt
                (cons 172 1)            ;dimtofl 
                (cons 173 0)            ;dimsah    
                (cons 174 0)            ;dimtix
                (cons 175 1)            ;dimsoxd
                (cons 176 0)            ;dimclrd
                (cons 177 0)            ;dimclre
                (cons 178 0)            ;dimclrt
                (cons 179 1)            ;dimadec
                (cons 271 0)            ;dimdec    
                (cons 272 0)            ;dimtdec 
                (cons 275 1)            ;dimaunit
                (cons 277 2)            ;dimlunit
                (cons 278 44)           ;dimdsep  
                (cons 279 0)            ;dimtmove
                (cons 280 0)            ;dimjust
                (cons 281 0)            ;dimsd1
                (cons 282 0)            ;dimsd2
                (cons 283 0)            ;dimtolj
                (cons 284 8)            ;dimtzin
                (cons 288 0)            ;dimupt
                (cons 340 (tblobjname "style" (getvar "textstyle")))
                                        ;dimtxtsty 
                (cons 342 (tblobjname "block" "_oblique"))
                (cons 343 (tblobjname "block" "_oblique"))
                (cons 344 (tblobjname "block" "_oblique"))
                (cons 371 -2)           ;dimlwd
                (cons 372 -2)           ;dimlwe
                ) ;_ end of list
              ) ;_ end of entmakex
        ) ;_ end of setq
  (setvar "DIMBLK" dims)
  res
  ) ;_ end of defun
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
 
Автор темы   Непрочитано 08.12.2010, 12:01
#9
Mozgunov

Начинающий проектировщик
 
Регистрация: 07.02.2008
Санкт-Петербург
Сообщений: 443
<phrase 1=


Ваша функция тоже не работает. Засечки как были так и остались стрелочками ((
P.S. Во вложениях размерный стиль возвращаемый вашей функцией.
Миниатюры
Нажмите на изображение для увеличения
Название: skrin.jpg
Просмотров: 55
Размер:	64.4 Кб
ID:	49626  

Последний раз редактировалось Mozgunov, 08.12.2010 в 12:13.
Mozgunov вне форума  
 
Непрочитано 08.12.2010, 12:23
#10
Лиспер


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


Смешно, но вот такой код сработал:
Код:
[Выделить все]
(vl-load-com)

(defun test (/ res dims blk)
  (repeat 2 (vla-purgeall (vla-get-activedocument (vlax-get-acad-object))))
  (setq dims (cond
               ((/= "" (getvar "DIMBLK")) "_none")
               (t (getvar "dimblk"))
               ) ;_ end of cond
        ) ;_ end of setq
  (setvar "DIMBLK" "oblique")
  (setq blk (handent (vla-get-handle
                       (vla-item (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object))) "_oblique")
                       ) ;_ end of vla-get-handle
                     ) ;_ end of handent
        res (entmake
              (list
                (cons 0 "DIMSTYLE")
                (cons 100 "AcDbSymbolTableRecord")
                (cons 100 "AcDbDimStyleTableRecord")
                (cons 2 "Detali")
                (cons 70 0)
                (cons 40 1.0) ;dimscale 
                (cons 41 2.5) ;dimsz    
                (cons 42 0.625) ;dimexo   
                (cons 43 3.75) ;dimdli    
                (cons 44 1.25) ;dimexe    
                (cons 45 0.5) ;dimrnd   
                (cons 46 0.0) ;dimdle   
                (cons 140 2.5) ;dimtxt    
                (cons 141 -2.5) ;dimcen   
                (cons 143 0.005) ;dimaltf 
                (cons 145 0) ;dimtvp
                (cons 147 0.5) ;dimgap    
                (cons 72 0) ;dimlim
                (cons 73 0) ;dimtih   
                (cons 74 0) ;dimtoh   
                (cons 77 1) ;dimtad   
                (cons 78 8) ;dimzin   
                (cons 79 2) ;dimazin  
                (cons 170 0) ;dimalt
                (cons 172 1) ;dimtofl 
                (cons 173 0) ;dimsah    
                (cons 174 0) ;dimtix
                (cons 175 1) ;dimsoxd
                (cons 176 0) ;dimclrd
                (cons 177 0) ;dimclre
                (cons 178 0) ;dimclrt
                (cons 179 1) ;dimadec
                (cons 271 0) ;dimdec    
                (cons 272 0) ;dimtdec 
                (cons 275 1) ;dimaunit
                (cons 277 2) ;dimlunit
                (cons 278 44) ;dimdsep  
                (cons 279 0) ;dimtmove
                (cons 280 0) ;dimjust
                (cons 281 0) ;dimsd1
                (cons 282 0) ;dimsd2
                (cons 283 0) ;dimtolj
                (cons 284 8) ;dimtzin
                (cons 288 0) ;dimupt
                (cons 340 (tblobjname "style" (getvar "textstyle")))
          ;dimtxtsty
                (cons 371 -2) ;dimlwd
                (cons 372 -2) ;dimlwe
                (cons 342 blk)
                (cons 343 blk)
                (cons 344 blk)
                ) ;_ end of list
              ) ;_ end of entmakex
        ) ;_ end of setq
  (setvar "DIMBLK" dims)
  res
  ) ;_ end of defun
__________________
(/= RegDate StartReadDate)

Последний раз редактировалось Лиспер, 08.12.2010 в 13:26.
Лиспер вне форума  
 
Автор темы   Непрочитано 08.12.2010, 12:33
#11
Mozgunov

Начинающий проектировщик
 
Регистрация: 07.02.2008
Санкт-Петербург
Сообщений: 443
<phrase 1=


Выдаёт Ошибка: Ошибка Automation. Ключ не найден
Mozgunov вне форума  
 
Непрочитано 08.12.2010, 13:26
#12
Лиспер


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


Исправил #10
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
 
Автор темы   Непрочитано 08.12.2010, 14:31
#13
Mozgunov

Начинающий проектировщик
 
Регистрация: 07.02.2008
Санкт-Петербург
Сообщений: 443
<phrase 1=


Спасибо большое! Заработало! Нужно разбираться с ActiveX . А то как эти хэндлы получать я даже не подозревал)) Да там ещё поправить нужно в строке
Код:
[Выделить все]
  (setvar "DIMBLK" "oblique")
подчёркивание добавить. Спасибо ещё раз!
Mozgunov вне форума  
 
Непрочитано 08.12.2010, 14:44
#14
Лиспер


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


Необязательно. Начиная как минимум с версии 2006 для этих системных переменных подчеркивание не требуется. А вот для поиска имен блоков - надо.
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
 
Непрочитано 08.12.2010, 15:22
#15
TararykovDG

Программист-энтузиаст
 
Регистрация: 17.07.2009
Воронеж
Сообщений: 571


Цитата:
Сообщение от Лиспер Посмотреть сообщение
Необязательно. Начиная как минимум с версии 2006 для этих системных переменных подчеркивание не требуется. А вот для поиска имен блоков - надо.
Лиспер, не в укор, а просто для ясности. Если версия ACad'а локализованная то подчеркивание ОБЯЗАТЕЛЬНО надо. У меня ACad 2008
Код:
[Выделить все]
$ (setvar "DIMBLK" "oblique")
; ошибка: Настройка переменной AutoCAD отвергнута: "DIMBLK" "oblique"
_$ (setvar "DIMBLK" "_oblique")
"_oblique"
__________________
cadtools
TararykovDG вне форума  
 
Непрочитано 08.12.2010, 15:42
#16
Лиспер


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


В таком случае приношу свои извинения
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Не получается создать примитив с расширенными данными

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подскажите, существуют ли практические руководства по Lisp? vn LISP 261 26.11.2015 13:27
Не получается создать простой динамический блок kosolapi Динамические блоки 5 06.10.2009 14:37
Как создать линию, чтобы она имела примитив Closed Polyline? Лелька AutoCAD 11 13.11.2008 11:57
Как создать объекты с доп. данными e_v_a Программирование 9 25.07.2007 16:14