При повторном запуске кода, функция SSGET возвращает nil. Почему?
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > При повторном запуске кода, функция SSGET возвращает nil. Почему?

При повторном запуске кода, функция SSGET возвращает nil. Почему?

Ответ
Поиск в этой теме
Непрочитано 24.11.2015, 11:09 #1
При повторном запуске кода, функция SSGET возвращает nil. Почему?
vladimirr_b
 
Регистрация: 24.01.2012
Сообщений: 84

Здравствуйте! Не могу понять почему не работает функция SSGET: при первом запуске кода программа выполняет задуманные операции, но при повторном запуске функция SSGET возвращает значение nil, хотя по ее аргументам она должна была возвратить набор. Господа программисты помогите пожалуйста разобраться почему так происходит.

Код:
[Выделить все]
 (defun naimen (p_b p_v / p1 p2 ss_1 k j name_ent1 vlaobj ent_f)
  (setq p1 (mapcar '+ p_b '(-124 19 0)))
  (setq p2 (mapcar '+ p_b '(-56 6 0)))

  (setq ss_1 nil)
  (setq ss_1 (ssget "_C" p1 p2))
  (setq k (sslength ss_1))
  (setq j 0)
  (while (< j k)
    (setq name_ent1 (ssname ss_1 j))
    (setq vlaobj (vlax-ename->vla-object name_ent1))
    (if	(= (vla-get-objectname vlaobj) "AcDbMText")
      (progn
	(setq txtstr (vlax-get-property vlaobj 'textstring))
	(setq ent_f	       
	       (vla-addtext model_space txtstr (vlax-3d-point p_v) 3.5)
	)
	(vlax-put-property ent_f 'layer "Òîíêàÿ")
      )
    )
    (setq j (+ 1 j))
  )
)

(vl-load-com)
(setq acad_object (vlax-get-acad-object))
(setq active_document (vla-get-activedocument acad_object))
(setq model_space (vla-get-modelspace active_document))


  (setq sp_1 (list '(4696.68 3985.62 0) '(5327.14 3985.62 0)
		   '(5782.28 3985.62 0) '(4696.68 3507.11 0)
		   '(5327.14 3507.11 0) '(5782.28 3507.11 0)
		   '(4696.68 3052.19 0) '(5327.14 3052.19 0)
		   '(5782.28 3052.19 0)))
  (setq p1 (getpoint "\nВыберите точку вставки списка листов: "))
(setq n 9)
(setq i 0)
  (while (< i n)
    (setq p_b (nth i sp_1))
    (setq i (+ i 1))  
    (setq p_v (polar p1 (- (/ pi 2)) (* i 10)))
    (naimen p_b p_v)
    
    )
Просмотров: 3060
 
Непрочитано 24.11.2015, 11:12
1 | #2
Кулик Алексей aka kpblc
Moderator

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


Проверяй, на экране показываются ли точки p1 и p2 на момент вызова (ssget "_C" ...).
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 24.11.2015, 19:02
1 | #3
VVA

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


Да, скорее всего точки не в видовом экране. Как это сделать и необходимые функции можно посмотреть здесь Как определить, что точка за пределами видимой области? VBA
Фрагмент кода
Код:
[Выделить все]
(defun naimen (p_b p_v / p1 p2 ss_1 k j name_ent1 vlaobj ent_f) 
(setq p1 (mapcar '+ p_b '(-124 19 0))) 
(setq p2 (mapcar '+ p_b '(-56 6 0))) 
(if(not(and (lib:IsPtInView p1) (lib:IsPtInView p2))) ;_!!!Точки p1 и p2 - в МСК
  (lib:Zoom2Lst (list p1 p2))
  )
(setq ss_1 nil) 
(setq ss_1 (ssget "_C" p1 p2))
....
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 25.11.2015, 03:41
#4
vladimirr_b


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


Да, дело оказалось именно в экране. Большое спасибо за помощь!
vladimirr_b вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > При повторном запуске кода, функция SSGET возвращает nil. Почему?



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Какой язык перспективен для инженера-конструктора с условием The_Mercy_Seat Программирование 705 17.03.2021 14:19
структурированный список Holon Программирование 22 11.09.2007 14:09