Странное поведение (itoa(vla-get-objectid obj))
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Странное поведение (itoa(vla-get-objectid obj))

Странное поведение (itoa(vla-get-objectid obj))

Ответ
Поиск в этой теме
Непрочитано 17.04.2014, 21:43 #1
Странное поведение (itoa(vla-get-objectid obj))
nolte
 
спринклеры, сантехника
 
Регистрация: 26.01.2010
Сообщений: 190

не нашел ответ в инете на такую загадку

Команда: (type (vla-get-objectid obj))
INT

Команда: (itoa (vla-get-objectid obj))
"8796088216720"

Команда: (rtos (vla-get-objectid obj) 2 0)
"44"

Команда: (vla-get-objectid obj)
44
__________________
Знание лисп: со справочником Н. Полещука
Просмотров: 6114
 
Непрочитано 17.04.2014, 22:07
#2
Кулик Алексей aka kpblc
Moderator

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


Попробуй не itoa, а rtos
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 17.04.2014, 22:10
#3
nolte

спринклеры, сантехника
 
Регистрация: 26.01.2010
Сообщений: 190
Отправить сообщение для nolte с помощью Skype™


да в том то и дело, что rtos работает (как видно из поста 1). вот только type = int. почему же itoa выдает такой странный результат.
__________________
Знание лисп: со справочником Н. Полещука
nolte вне форума  
 
Непрочитано 17.04.2014, 22:12
#4
Кулик Алексей aka kpblc
Moderator

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


Возможно, потому, что целое в понятии AutoLISP не может быть больше 32 565 (мне так кажется). А вообще, зачем тебе преобразовывать ObjectID в строку? Может, достаточно будет воспользоваться vl-princ-to-string ?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 17.04.2014, 23:15
#5
kakt00z

инженер-проектировщик КИПиА
 
Регистрация: 30.08.2008
Минск
Сообщений: 159


я в случаях с такими глюками перезапускаю акад ... а иногда и весь комп
kakt00z вне форума  
 
Автор темы   Непрочитано 17.04.2014, 23:20
#6
nolte

спринклеры, сантехника
 
Регистрация: 26.01.2010
Сообщений: 190
Отправить сообщение для nolte с помощью Skype™


Перезапускал не помогло.
Странно то, что работало все нормально, вдруг бац и вторая смена. Вооще настараживают такие внезапные перемены.
Вот подумал, может я какую кнапулечку не ту тиснул, может кто сталкивался решил спросить. А число не большое 44.
__________________
Знание лисп: со справочником Н. Полещука
nolte вне форума  
 
Непрочитано 17.04.2014, 23:53
#7
kakt00z

инженер-проектировщик КИПиА
 
Регистрация: 30.08.2008
Минск
Сообщений: 159


ID "8796088216720" и ID "44" - это в одном сеансе открытия файла? на том же самом объекте (что за объект?)
kakt00z вне форума  
 
Автор темы   Непрочитано 18.04.2014, 00:22
#8
nolte

спринклеры, сантехника
 
Регистрация: 26.01.2010
Сообщений: 190
Отправить сообщение для nolte с помощью Skype™


ну да. пробовал не на одном объекте и линия и полилиния и блок.
__________________
Знание лисп: со справочником Н. Полещука
nolte вне форума  
 
Непрочитано 18.04.2014, 01:10
#9
kakt00z

инженер-проектировщик КИПиА
 
Регистрация: 30.08.2008
Минск
Сообщений: 159


давай код, пока что не верю (не станиславский ))))
kakt00z вне форума  
 
Автор темы   Непрочитано 18.04.2014, 13:47
#10
nolte

спринклеры, сантехника
 
Регистрация: 26.01.2010
Сообщений: 190
Отправить сообщение для nolte с помощью Skype™


код в посте 1. а пока что я rtos-ом попользовался.
__________________
Знание лисп: со справочником Н. Полещука
nolte вне форума  
 
Непрочитано 18.04.2014, 14:55
#11
Кулик Алексей aka kpblc
Moderator

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


Вообще-то странно, только что проверил на AutoCAD 2014 Eng + SP:
Код:
[Выделить все]
_$ (setq ent (entlast))
<Entity name: 7ffffb05c80>
_$ (entget ent)
((-1 . <Entity name: 7ffffb05c80>) (0 . "LINE") (330 . <Entity name: 7ffffb039f0>) (5 . "240") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 . "AcDbLine") (10 1987.86 1239.39 0.0) (11 3241.86 1990.71 0.0) (210 0.0 0.0 1.0))
_$ (vla-get-ObjectID (vlax-ename->vla-object ent))
42
_$ (vla-get-ObjectID32 (vlax-ename->vla-object ent))
42
_$ (type (vla-get-ObjectID32 (vlax-ename->vla-object ent)))
INT
_$ (itoa (vla-get-ObjectID32 (vlax-ename->vla-object ent)))
"42"
_$ (rtos (vla-get-ObjectID32 (vlax-ename->vla-object ent)) 2 14)
"42.00000000000001"
_$ (VL-PRINC-TO-STRING (vla-get-ObjectID (vlax-ename->vla-object ent)))
"42"
_$ (VL-PRIN1-TO-STRING (vla-get-ObjectID (vlax-ename->vla-object ent)))
"42"
_$ (VL-PRINC-TO-STRING (vla-get-ObjectID32 (vlax-ename->vla-object ent)))
"42"
_$ (VL-PRIN1-TO-STRING (vla-get-ObjectID32 (vlax-ename->vla-object ent)))
"42"
_$
На всякий случай: Win7 Pro x64.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 18.04.2014, 15:15
#12
nolte

спринклеры, сантехника
 
Регистрация: 26.01.2010
Сообщений: 190
Отправить сообщение для nolte с помощью Skype™


автокад 2014 рус вин 7 про х64

Код:
[Выделить все]
 
Команда: (vla-get-objectid obj)
42

Команда: (itoa (vla-get-objectid obj))
"8796087803088"

Команда: (vla-get-objectid32 obj)
42

Команда: (itoa(vla-get-objectid32 obj))
"42"

Команда: (itoa (vla-get-objectid obj))
"8796087803088"

Команда: (atoi(itoa (vla-get-objectid obj)))
2147483647
__________________
Знание лисп: со справочником Н. Полещука
nolte вне форума  
 
Непрочитано 18.04.2014, 16:25
#13
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Осталось чертеж приложить и код, получающий obj...
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Непрочитано 18.04.2014, 16:47
#14
kakt00z

инженер-проектировщик КИПиА
 
Регистрация: 30.08.2008
Минск
Сообщений: 159


XP SP3
AutoCAD 2014 Eng "19.1s (LMS Tech)" (SP не ставил вроде)
Код:
[Выделить все]
_$ (setq obj (car (entsel)))
<Entity name: 78dba6e0>
_$ (entget obj)
((-1 . <Entity name: 78dba6e0>) (0 . "LINE") (330 . <Entity name: 78d16cf8>) (5 . "1D4") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 . "AcDbLine") (10 27.4097 12.4011 0.0) (11 22.6263 8.95133 0.0) (210 0.0 0.0 1.0))
_$ (setq obj (vlax-ename->vla-object obj))
#<VLA-OBJECT IAcadLine 35f2a804>
_$ (vla-get-ObjectID obj)
2027661024
_$ (itoa (vla-get-ObjectID obj))
"2027661024"
_$ (rtos (vla-get-ObjectID obj) 2 14)
"2027661024.000000"
_$ (vla-get-ObjectID32 obj)
; error: no function definition: VLA-GET-OBJECTID32
_1$

Последний раз редактировалось Кулик Алексей aka kpblc, 19.04.2014 в 17:36.
kakt00z вне форума  
 
Непрочитано 19.04.2014, 17:37
#15
Кулик Алексей aka kpblc
Moderator

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


kakt00z, у тебя 32 или 64 бита в AutoCAD?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 19.04.2014, 21:41
#16
kakt00z

инженер-проектировщик КИПиА
 
Регистрация: 30.08.2008
Минск
Сообщений: 159


и винда и кад 32 бита
kakt00z вне форума  
 
Непрочитано 19.04.2014, 21:58
#17
Кулик Алексей aka kpblc
Moderator

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


Поэтому vla-get-ObjectID32 там и не существует.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 19.04.2014, 22:24
#18
nolte

спринклеры, сантехника
 
Регистрация: 26.01.2010
Сообщений: 190
Отправить сообщение для nolte с помощью Skype™


Цитата:
Сообщение от kakt00z Посмотреть сообщение
$ (vla-get-ObjectID obj)
2027661024
а номера чего такие огромные, возможно и моя ошибка как то с этим связана.
__________________
Знание лисп: со справочником Н. Полещука
nolte вне форума  
 
Непрочитано 19.04.2014, 22:30
#19
kakt00z

инженер-проектировщик КИПиА
 
Регистрация: 30.08.2008
Минск
Сообщений: 159


думаю это из-за разрядности системы, я за весь свой опыт просмотра vla-get-ObjectID (лет ~8) только такие длинные номера и видел потому мне и показались ваши значения "42" весьма странными
kakt00z вне форума  
 
Непрочитано 20.04.2014, 21:13
#20
Vov.Ka


 
Регистрация: 21.07.2008
Луцьк
Сообщений: 179


Цитата:
Сообщение от kakt00z Посмотреть сообщение
думаю это из-за разрядности системы, я за весь свой опыт просмотра vla-get-ObjectID (лет ~8) только такие длинные номера и видел потому мне и показались ваши значения "42" весьма странными
Проверить ObjectID можно путем преобразования Entity name из hex в dec
Vov.Ka вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Странное поведение (itoa(vla-get-objectid obj))



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Странное поведение динамического блока высотной отметки hwd Динамические блоки 12 08.09.2011 11:15
Странное поведение некоторых размеров при перетаскивании. Marv AutoCAD 13 27.10.2010 14:40
Странное поведение команды FILLET - не продолжает, а двигает I.Van AutoCAD 2 08.08.2007 09:29