Использование чужого кода в своих программах - Страница 2
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Использование чужого кода в своих программах

Использование чужого кода в своих программах

Ответ
Поиск в этой теме
Непрочитано 01.09.2013, 15:06
Использование чужого кода в своих программах
Golem-iq
 
студент
 
Москва
Регистрация: 03.03.2012
Сообщений: 50

Доброго времени суток!

Пишу на LISP.
Хочу попробовать дать свою программу проектировщикам на предприятие. Предприятие государственное, поэтому AutoCAD у них лицензионный. Возникает вопрос, смогут ли они пользоваться моей программой? (Сейчас бесплатно).

Основная часть программы написана мной, но есть один кусок кода в виде отдельного файла, который я нашёл на данном форуме. Он позволяет осуществлять передачу значения переменной между AutoCAD и Excel из конкретной ячейки в переменную (и наоборот). Файл называется InetExcel.fas. Чьё это творение я найти не могу, и условия распространения файла тоже не знаю. А написать свою замену не получается.

Если кто может помочь с передачей именно значения между AutoCAD и Excel, будьте добры помогите. На форуме есть примеры с передачей всей таблицы, с её связыванием, а именно считывание/передача одного значения не найду.

Вот листинг кода для передачи / приёма в эксель:
Код:
[Выделить все]
 (defun C:EXM ( / DESRNG EXCELAPP FILEPATH NEXTRNG SELRNG SHT SHTNUM WBK stroka colon)
  (setq FilePath (getfiled	"Выберите файл с прайсами :"
		 (getvar "dwgprefix")
			 "xlsx"
			 16
	         )
  )

  (setq ShtNum (getstring t "\nВведите имя листа <Лист1>: \n"))
  (if (eq ShtNum "")
    (setq ShtNum "Лист1")
  )
  (setq ExcelApp (vlax-get-or-create-object "Excel.Application"))
  (vla-put-visible ExcelApp :vlax-true)
  (setq Wbk (vl-catch-all-apply 'vla-open (list (vlax-get-property ExcelApp "WorkBooks") FilePath)))
  (vlax-invoke-method Wbk 'Activate)
  (setq Sht (vl-catch-all-apply 'vlax-get-property (list (vlax-get-property Wbk "Sheets") "Item" ShtNum)))
  (vlax-invoke-method Sht "Activate")

  ;; <действия в файле>
  (IN_WRITE-EXCEL 3 23 1000)
  (setq el1 (car (IN_READ-EXCEL 3 19 Param)))

  (vl-catch-all-apply 'vlax-invoke-method (list Wbk "Close" :vlax-true))
  (vl-catch-all-apply 'vlax-invoke-method (list ExcelApp "Quit"))
  (mapcar
    (function (lambda (x)
		(if (not (vlax-object-released-p x))
		  (vlax-release-object x)
		)
	      )
    )
    (list DesRng NextRng SelRng Sht Wbk ExcelApp); обязательно в обратном порядке
  )
  (setq	DesRng nil
	NextRng nil
	SelRng nil
	Sht nil
	Wbk nil
	ExcelApp nil
  )
  (gc)
  (gc)
  (gc)
  (prin1)
)

Вот ссылка на сам файл:
http://yadi.sk/d/giKeXlZ_54bK8


функции IN_WRITE-EXCEL и IN_READ-EXCEL для меня тёмный лес. Кто-нибудь может их раскрыть?

IN_WRITE-EXCEL X Y Z - записывает в конкретную ячейку значение
X - номер строки
Y - номер столбца
Z - значение

IN_READ-EXCEL X Y Z - считывает значение из конкретной ячейки
X - номер строки
Y - номер столбца
Z - значение
Просмотров: 8237
 
Непрочитано 02.09.2013, 11:16
#21
Do$

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


Offtop:
Цитата:
Сообщение от hwd Посмотреть сообщение
Не обращай внимания
А вот не могу! Как правильно заметил, потому что:
Цитата:
Сообщение от hwd Посмотреть сообщение
но печально, что эту лапшу он вешает тем, кто "не в теме" и те это "кушают"...

По теме - автор, разберись с работой с экселем и напиши сам эти функции, там ничего сложного. Примеров на форуме масса. Использовать "черный ящик" от неизвестного издателя - это, как минимум, рисковано с точки зрения стабильности работы приложения.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Непрочитано 02.09.2013, 11:47
#22
VVA

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


Посмотри тему Как работать с Excel из LISP
В посте #6 есть много ссылок. Часть, наверное, уже недействующие, но п.5 ( KozMos VLXLS Project ) еще доступен
Цитата:
KozMos VLXLS Project
By using ActiveX, we can control Microsoft Excel from within Visual LISP. VLXLS is a fully open source project to demonstrate and execute the procedure of data IO (Input/Output) between Excel and AutoCAD.
ActiveX uses variant but Visual LISP use normal list, VLXLS will translate between the two variable types very well. By doing so, the speed of reading data from Excel and writing data to Excel can be same as VB. We can pass HUGE list data into Excel within seconds!
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 02.09.2013 в 16:39.
VVA вне форума  
 
Непрочитано 02.09.2013, 12:57
#23
maratovich


 
Регистрация: 12.07.2009
г. Самара
Сообщений: 2,437
Отправить сообщение для maratovich с помощью Skype™


Offtop: Глубокоуважаемые
hwd
Do$
Вы лучше напишите что нибудь полезное автору, а то кроме флуда ничего от вас нет. И не надо выражаться.
Заодно на досуге умных людей почитайте http://kpblc.blogspot.ru/2011/12/blog-post.html
maratovich вне форума  
 
Автор темы   Непрочитано 02.09.2013, 13:16
#24
Golem-iq

студент
 
Регистрация: 03.03.2012
Москва
Сообщений: 50


Цитата:
Сообщение от VVA Посмотреть сообщение
Посмотри тему Как работать с Excel из LISP
В посте #6 есть много ссылок. Часть, наверное, уде недействующие, но п.5 ( KozMos VLXLS Project ) еще доступен
благодарю, посмотрю.
Golem-iq вне форума  
 
Непрочитано 02.09.2013, 13:26
#25
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от maratovich Посмотреть сообщение
кроме флуда ничего от вас нет.
Т.е. аргументированно предостерегать топикстартера от изучения VB6 - это флуд, а агитация за VB6, причём с путаньем элементарных понятий - это не флуд? Не выдавай желаемое за действительное.
Цитата:
Сообщение от maratovich Посмотреть сообщение
Вы лучше напишите что нибудь полезное автору
а мы и написали. Кто виноват, что ты в упор этого не видишь? Автору посоветовали не заморачиваться с VB6 и объяснили почему. Хочет - пусть изучает VB6.

Цитата:
Сообщение от maratovich Посмотреть сообщение
Заодно на досуге умных людей почитайте
Тебе выше Дейкстру процитировали, "читатель"... Могу Стровструпа процитировать, если что... А по поводу данной тобою ссылке - ты на дату не забывай смотреть. Лисп из автокада никуда не денется: развиваться не будет, но и не умрёт. VBA в AutoCAD не так давно был обновлён до версии VBA 7.1, несмотря на то, что до этого Autodesk писала совсем обратное.

maratovich, мне глубоко наплевать как и на чём ты пишешь. Мои замечания - это предостережения, адресованные топикстартеру, а он уж пусть сам всё взвешивает и принимает решение.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 02.09.2013, 13:37
#26
maratovich


 
Регистрация: 12.07.2009
г. Самара
Сообщений: 2,437
Отправить сообщение для maratovich с помощью Skype™


Offtop:
Цитата:
Сообщение от hwd Посмотреть сообщение
а агитация за VB6
А мы ещё и читаем только что нам интересно ?
Цитата:
Сообщение от maratovich Посмотреть сообщение
то надо менять язык, хотябы на VB6.
Если автокад прекратит поддержку лиспа, также как он сделал с VBA, то лисп накроется медным тазом, а VB6 спокойно будет продолжать работать по COM.
Мои замечания по делу указаны #3 #10 #14 и вслучае необходимости предложена помощь по этим вопросам и лицензированию
maratovich вне форума  
 
Непрочитано 02.09.2013, 13:39
#27
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Offtop:
Цитата:
Сообщение от maratovich
Если автокад прекратит поддержку лиспа...
Если бы у бабушки были яйца, то она была бы дедушкой.

Цитата:
Сообщение от maratovich
хотябы на VB6
"Хотябы" пишется раздельно, а то глаз как-то режет...

пациент безнадёжен...
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:

Последний раз редактировалось hwd, 02.09.2013 в 13:55.
hwd вне форума  
 
Непрочитано 02.09.2013, 13:41
#28
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от hwd Посмотреть сообщение
Тебе выше Дейкстру процитировали
Не думаю, что цитата относится к VB6
gomer вне форума  
 
Автор темы   Непрочитано 02.09.2013, 13:44
#29
Golem-iq

студент
 
Регистрация: 03.03.2012
Москва
Сообщений: 50


автор топика в шоке
Golem-iq вне форума  
 
Непрочитано 02.09.2013, 13:56
#30
Do$

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


Цитата:
Сообщение от maratovich Посмотреть сообщение
Вы лучше напишите что нибудь полезное автору
Да автору уже все сказали. Самый лучший совет в этом случае - юзать поиск, эта ложка проблема поднималась уже много раз.
Владимир в #22 уже даже за автора это разжевал сделал. Добавить больше нечего, кроме как в рот положить написать готовый к использованию код.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Непрочитано 02.09.2013, 14:13
#31
trir


 
Регистрация: 18.12.2010
Сообщений: 5,107


Offtop:
Обсуждать VB6 и COM, когда есть dotNET - смешно!
trir вне форума  
 
Непрочитано 02.09.2013, 14:33
#32
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Цитата:
Сообщение от maratovich Посмотреть сообщение
Вы лучше напишите что нибудь полезное автору, а то кроме флуда ничего от вас нет. И не надо выражаться.
Хоть вышесказанное относиться и не ко мне, но с моей точки зрения указать автору как реализовать в автолиспе сей элементарный пример, а не привести его, гораздо полезнее, как для него, так и для отсутствия еще 10-ка подобных запросов. Код представленный автором уже содержит 95% необходимого для получения нужных данных из excel, который он судя по всему откуда-то "бездумно" скопировал. Я (и не только я) его "отослал" в поиск изучения объектной модели (без которой, кстати, знание никакого языка не поможет), хоть конечно и могу написать две строки для получения данных, но они так и останутся "филькиной грамотой" пока он не научиться понимать как исользовать ActiveX модель внешних приложений. Вы же предлагаете начать c изучения VB6 - причем "здравых" аргументов выбора я не увидел (язык который не может сделать exe и работать с COM моделью надо еще поискать), а уж с точки зрения базового подхода к реализаци алгоритмов в VB6, то я смело могут предположить, что мнение Дейкстры о нем бы не изменилось. Я бы тоже предостерег автора от изучения VB6 - ИХМО свое время лучше потратить на изучение более практичных и полезных вещей.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Использование чужого кода в своих программах



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