<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	
	>
<channel>
	<title>Комментарии на: Объявление lisp под NET (nanoCAD 24+) и *error*</title>
	<atom:link href="https://autolisp.ru/2025/02/03/lisp-from-net-nc24-with-lisperror/feed/" rel="self" type="application/rss+xml" />
	<link>https://autolisp.ru/2025/02/03/lisp-from-net-nc24-with-lisperror/</link>
	<description>LISP для AutoCAD</description>
	<lastBuildDate>Tue, 24 Feb 2026 16:11:05 +0000</lastBuildDate>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=4.0</generator>
	<item>
		<title>От: Кулик Алексей aka kpblc</title>
		<link>https://autolisp.ru/2025/02/03/lisp-from-net-nc24-with-lisperror/comment-page-1/#comment-115332</link>
		<dc:creator><![CDATA[Кулик Алексей aka kpblc]]></dc:creator>
		<pubDate>Mon, 03 Feb 2025 13:24:27 +0000</pubDate>
		<guid isPermaLink="false">https://autolisp.ru/?p=5095#comment-115332</guid>
		<description><![CDATA[М-да, как-то про CommandFlags я упустил из виду. Спасибо )]]></description>
		<content:encoded><![CDATA[<p>М-да, как-то про CommandFlags я упустил из виду. Спасибо )</p>
]]></content:encoded>
	</item>
	<item>
		<title>От: drz</title>
		<link>https://autolisp.ru/2025/02/03/lisp-from-net-nc24-with-lisperror/comment-page-1/#comment-115330</link>
		<dc:creator><![CDATA[drz]]></dc:creator>
		<pubDate>Mon, 03 Feb 2025 13:00:53 +0000</pubDate>
		<guid isPermaLink="false">https://autolisp.ru/?p=5095#comment-115330</guid>
		<description><![CDATA[`флаг CommandFlags.Sessionуказывает, что контекст выполнения команды документ`
заболтался, конечно жэ контент выполнения приложение)))]]></description>
		<content:encoded><![CDATA[<p><code>флаг CommandFlags.Sessionуказывает, что контекст выполнения команды документ</code><br />
заболтался, конечно жэ контент выполнения приложение)))</p>
]]></content:encoded>
	</item>
	<item>
		<title>От: drz</title>
		<link>https://autolisp.ru/2025/02/03/lisp-from-net-nc24-with-lisperror/comment-page-1/#comment-115329</link>
		<dc:creator><![CDATA[drz]]></dc:creator>
		<pubDate>Mon, 03 Feb 2025 12:57:45 +0000</pubDate>
		<guid isPermaLink="false">https://autolisp.ru/?p=5095#comment-115329</guid>
		<description><![CDATA[более того
для команды
```
  [Rtm.CommandMethod(&quot;drz_Test5&quot;)]
  public void CmdPTest5()
  {
      Document doc = Application.DocumentManager.MdiActiveDocument;
      if (doc == null)
      {
          return;
      }
      Editor ed = doc.Editor;
      ed.WriteMessage(&quot;Проверка документа на null не нужна, команда и так не будет выполнена без документа&quot;);
  }
```
проверка наличия активного документа не требуется
======

а вот здесь обязательна проверка, команда выполняется в контексте приложения (мы жэж не только с документом можем работать)))
```
   [Rtm.CommandMethod(&quot;drz_Test6&quot;, Rtm.CommandFlags.Session)]
   public void CmdPTest6()
   {
       Document doc = Application.DocumentManager.MdiActiveDocument;
       if (doc == null)
       {
           return;
       }
       Editor ed = doc.Editor;
       ed.WriteMessage(&quot;Проверка документа на null обязательна, иначе без дакумента выхватим эксепшен&quot;);
   }
```
как видишь static совсем не при делах),
по крайней мере в нане]]></description>
		<content:encoded><![CDATA[<p>более того<br />
для команды<br />
<code></code><code><br />
  [Rtm.CommandMethod("drz_Test5")]<br />
  public void CmdPTest5()<br />
  {<br />
      Document doc = Application.DocumentManager.MdiActiveDocument;<br />
      if (doc == null)<br />
      {<br />
          return;<br />
      }<br />
      Editor ed = doc.Editor;<br />
      ed.WriteMessage("Проверка документа на null не нужна, команда и так не будет выполнена без документа");<br />
  }<br />
</code><code></code><br />
проверка наличия активного документа не требуется<br />
======</p>
<p>а вот здесь обязательна проверка, команда выполняется в контексте приложения (мы жэж не только с документом можем работать)))<br />
<code></code><code><br />
   [Rtm.CommandMethod("drz_Test6", Rtm.CommandFlags.Session)]<br />
   public void CmdPTest6()<br />
   {<br />
       Document doc = Application.DocumentManager.MdiActiveDocument;<br />
       if (doc == null)<br />
       {<br />
           return;<br />
       }<br />
       Editor ed = doc.Editor;<br />
       ed.WriteMessage("Проверка документа на null обязательна, иначе без дакумента выхватим эксепшен");<br />
   }<br />
</code><code></code><br />
как видишь static совсем не при делах),<br />
по крайней мере в нане</p>
]]></content:encoded>
	</item>
	<item>
		<title>От: drz</title>
		<link>https://autolisp.ru/2025/02/03/lisp-from-net-nc24-with-lisperror/comment-page-1/#comment-115328</link>
		<dc:creator><![CDATA[drz]]></dc:creator>
		<pubDate>Mon, 03 Feb 2025 12:48:00 +0000</pubDate>
		<guid isPermaLink="false">https://autolisp.ru/?p=5095#comment-115328</guid>
		<description><![CDATA[нет, static не влияет
по умолчанию команда всегда выполняется в контексте документа
очевидно, что эти команды без документа работать не будут

`
using Win = System.Windows;
/////
 [Rtm.CommandMethod(&quot;drz_Test1&quot;)]
 public static void CmdPTest1()
 {
     Win.MessageBox.Show(&quot;static Test1&quot;);
 }
 [Rtm.CommandMethod(&quot;drz_Test2&quot;)]
 public void CmdPTest2()
 {
     Win.MessageBox.Show(&quot;Test2&quot;);
 }
`
флаг CommandFlags.Sessionуказывает, что контекст выполнения команды документ
так без документа команды будут работать
`
        [Rtm.CommandMethod(&quot;drz_Test3&quot;,Rtm.CommandFlags.Session)]
        public static void CmdPTest3()
        {
            Win.MessageBox.Show(&quot;static Session Test3&quot;);
        }
        [Rtm.CommandMethod(&quot;drz_Test4&quot;,Rtm.CommandFlags.Session)]
        public void CmdPTest4()
        {
            Win.MessageBox.Show(&quot;Session Test2&quot;);
        }
`
мы с тобой уже обсуждали этот момент год назад)))
на убиенном форуме, я то же забыл пришлось вспоминать]]></description>
		<content:encoded><![CDATA[<p>нет, static не влияет<br />
по умолчанию команда всегда выполняется в контексте документа<br />
очевидно, что эти команды без документа работать не будут</p>
<p><code><br />
using Win = System.Windows;<br />
/////<br />
 [Rtm.CommandMethod("drz_Test1")]<br />
 public static void CmdPTest1()<br />
 {<br />
     Win.MessageBox.Show("static Test1");<br />
 }<br />
 [Rtm.CommandMethod("drz_Test2")]<br />
 public void CmdPTest2()<br />
 {<br />
     Win.MessageBox.Show("Test2");<br />
 }<br />
</code><br />
флаг CommandFlags.Sessionуказывает, что контекст выполнения команды документ<br />
так без документа команды будут работать<br />
<code><br />
        [Rtm.CommandMethod("drz_Test3",Rtm.CommandFlags.Session)]<br />
        public static void CmdPTest3()<br />
        {<br />
            Win.MessageBox.Show("static Session Test3");<br />
        }<br />
        [Rtm.CommandMethod("drz_Test4",Rtm.CommandFlags.Session)]<br />
        public void CmdPTest4()<br />
        {<br />
            Win.MessageBox.Show("Session Test2");<br />
        }<br />
</code><br />
мы с тобой уже обсуждали этот момент год назад)))<br />
на убиенном форуме, я то же забыл пришлось вспоминать</p>
]]></content:encoded>
	</item>
	<item>
		<title>От: Кулик Алексей aka kpblc</title>
		<link>https://autolisp.ru/2025/02/03/lisp-from-net-nc24-with-lisperror/comment-page-1/#comment-115327</link>
		<dc:creator><![CDATA[Кулик Алексей aka kpblc]]></dc:creator>
		<pubDate>Mon, 03 Feb 2025 11:02:28 +0000</pubDate>
		<guid isPermaLink="false">https://autolisp.ru/?p=5095#comment-115327</guid>
		<description><![CDATA[Ну, во-первых, на многих исхониках (которые я видел в свое время) команды и лисп-функции прописывались в статических классах. И, во-вторых, если объявить команду не статической, она может быть вызывана в NC с ком.строки и без документа, насколько я помню. И плевать на регистрацию команды в меню )]]></description>
		<content:encoded><![CDATA[<p>Ну, во-первых, на многих исхониках (которые я видел в свое время) команды и лисп-функции прописывались в статических классах. И, во-вторых, если объявить команду не статической, она может быть вызывана в NC с ком.строки и без документа, насколько я помню. И плевать на регистрацию команды в меню )</p>
]]></content:encoded>
	</item>
	<item>
		<title>От: drz</title>
		<link>https://autolisp.ru/2025/02/03/lisp-from-net-nc24-with-lisperror/comment-page-1/#comment-115324</link>
		<dc:creator><![CDATA[drz]]></dc:creator>
		<pubDate>Mon, 03 Feb 2025 09:14:23 +0000</pubDate>
		<guid isPermaLink="false">https://autolisp.ru/?p=5095#comment-115324</guid>
		<description><![CDATA[статический метод то же работает
`
 public class TEST
    {
        [CommandMethod(&quot;t-HelloWorld&quot;)]
        public void HelloWorld()
        {
            Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
            ed.WriteMessage(&quot;Hello World&quot;);
        }
        
        #region LISP FUNCTION
        [LispFunction(&quot;dr-ttt&quot;)]
        public static bool LispTest3(ResultBuffer arguments)
        {
            bool res = false;
            Array args = arguments.AsArray();
            if (args.Length == 1)
            {
                string sText = ((TypedValue)(args.GetValue(0))).Value.ToString();
                Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
                ed.WriteMessage(&quot;\nAnswer &quot; + sText);
                res = true;
            }
            return res;
        }
        [LispFunction(&quot;_tt&quot;)]
        public static bool LispTest2(ResultBuffer arguments)
        {
            bool res = false;
            Array args = arguments.AsArray();
            if (args.Length == 1)
            {
                string sText = ((TypedValue)(args.GetValue(0))).Value.ToString();
                Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
                ed.WriteMessage(&quot;Answer &quot; + sText);
                res = true;
            }
            return res;
        }
        [LispFunction(&quot;_dr_test&quot;)]
        public static bool LispTest(ResultBuffer arguments)
        {
            bool res = false;
            Array args = arguments.AsArray();
            if (args.Length == 1)
            {
                string sText = ((TypedValue)(args.GetValue(0))).Value.ToString();
                Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
                ed.WriteMessage(&quot;Answer &quot; + sText);
                res = true;
            }
            return res;
        }

        [LispFunction(&quot;kpblc-test-resbuf&quot;)]
        public static ResultBuffer KpblcTestResBufList(ResultBuffer arg)
        {
            ResultBuffer res = new ResultBuffer();

            res.Add(new TypedValue((int)LispDataType.ListBegin));

            res.Add(new TypedValue((int)LispDataType.ListBegin));
            res.Add(new TypedValue((int)LispDataType.Text, &quot;key&quot;));
            res.Add(new TypedValue((int)LispDataType.DottedPair));
            res.Add(new TypedValue((int)LispDataType.Text, &quot;value&quot;));

            res.Add(new TypedValue((int)LispDataType.ListEnd));
            res.Add(new TypedValue((int)LispDataType.ListEnd));

            return res;
        }

        [LispFunction(&quot;kpblc-test-resbuf2&quot;)]
        public static ResultBuffer KpblcTestResBufList2(ResultBuffer arg)
        {
            ResultBuffer res = new ResultBuffer();

            res.Add(new TypedValue((int)LispDataType.ListBegin));
            res.Add(new TypedValue((int)LispDataType.ListBegin));

            res.Add(new TypedValue((int)LispDataType.Text, &quot;key&quot;));
            res.Add(new TypedValue((int)LispDataType.Text, &quot;value&quot;));
            res.Add(new TypedValue((int)LispDataType.ListEnd));

            res.Add(new TypedValue((int)LispDataType.ListBegin));
            res.Add(new TypedValue((int)LispDataType.Text, &quot;key2&quot;));
            res.Add(new TypedValue((int)LispDataType.Int32, 123));
            res.Add(new TypedValue((int)LispDataType.ListEnd));

            res.Add(new TypedValue((int)LispDataType.ListEnd));

            return res;
        }

        [LispFunction(&quot;kpblc-test-resbuf1&quot;)]
        public static ResultBuffer KpblcTestResBufList1(ResultBuffer arg)
        {
            ResultBuffer res = new ResultBuffer();

            res.Add(new TypedValue((int)LispDataType.ListBegin));

            res.Add(new TypedValue((int)LispDataType.ListBegin));
            res.Add(new TypedValue((int)LispDataType.Text, &quot;key&quot;));
            res.Add(new TypedValue((int)LispDataType.DottedPair));
            res.Add(new TypedValue((int)LispDataType.Text, &quot;value&quot;));
            res.Add(new TypedValue((int)LispDataType.ListEnd));

            res.Add(new TypedValue((int)LispDataType.ListBegin));
            res.Add(new TypedValue((int)LispDataType.Text, &quot;key2&quot;));
            res.Add(new TypedValue((int)LispDataType.DottedPair));
            res.Add(new TypedValue((int)LispDataType.Int32, 123));
            res.Add(new TypedValue((int)LispDataType.ListEnd));

            res.Add(new TypedValue((int)LispDataType.ListEnd));

            return res;
        }

        #endregion
    }
`
в том году на старом форуме в начале февраля разбирались]]></description>
		<content:encoded><![CDATA[<p>статический метод то же работает<br />
<code><br />
 public class TEST<br />
    {<br />
        [CommandMethod("t-HelloWorld")]<br />
        public void HelloWorld()<br />
        {<br />
            Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;<br />
            ed.WriteMessage("Hello World");<br />
        }</p>
<p>        #region LISP FUNCTION<br />
        [LispFunction("dr-ttt")]<br />
        public static bool LispTest3(ResultBuffer arguments)<br />
        {<br />
            bool res = false;<br />
            Array args = arguments.AsArray();<br />
            if (args.Length == 1)<br />
            {<br />
                string sText = ((TypedValue)(args.GetValue(0))).Value.ToString();<br />
                Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;<br />
                ed.WriteMessage("\nAnswer " + sText);<br />
                res = true;<br />
            }<br />
            return res;<br />
        }<br />
        [LispFunction("_tt")]<br />
        public static bool LispTest2(ResultBuffer arguments)<br />
        {<br />
            bool res = false;<br />
            Array args = arguments.AsArray();<br />
            if (args.Length == 1)<br />
            {<br />
                string sText = ((TypedValue)(args.GetValue(0))).Value.ToString();<br />
                Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;<br />
                ed.WriteMessage("Answer " + sText);<br />
                res = true;<br />
            }<br />
            return res;<br />
        }<br />
        [LispFunction("_dr_test")]<br />
        public static bool LispTest(ResultBuffer arguments)<br />
        {<br />
            bool res = false;<br />
            Array args = arguments.AsArray();<br />
            if (args.Length == 1)<br />
            {<br />
                string sText = ((TypedValue)(args.GetValue(0))).Value.ToString();<br />
                Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;<br />
                ed.WriteMessage("Answer " + sText);<br />
                res = true;<br />
            }<br />
            return res;<br />
        }</p>
<p>        [LispFunction("kpblc-test-resbuf")]<br />
        public static ResultBuffer KpblcTestResBufList(ResultBuffer arg)<br />
        {<br />
            ResultBuffer res = new ResultBuffer();</p>
<p>            res.Add(new TypedValue((int)LispDataType.ListBegin));</p>
<p>            res.Add(new TypedValue((int)LispDataType.ListBegin));<br />
            res.Add(new TypedValue((int)LispDataType.Text, "key"));<br />
            res.Add(new TypedValue((int)LispDataType.DottedPair));<br />
            res.Add(new TypedValue((int)LispDataType.Text, "value"));</p>
<p>            res.Add(new TypedValue((int)LispDataType.ListEnd));<br />
            res.Add(new TypedValue((int)LispDataType.ListEnd));</p>
<p>            return res;<br />
        }</p>
<p>        [LispFunction("kpblc-test-resbuf2")]<br />
        public static ResultBuffer KpblcTestResBufList2(ResultBuffer arg)<br />
        {<br />
            ResultBuffer res = new ResultBuffer();</p>
<p>            res.Add(new TypedValue((int)LispDataType.ListBegin));<br />
            res.Add(new TypedValue((int)LispDataType.ListBegin));</p>
<p>            res.Add(new TypedValue((int)LispDataType.Text, "key"));<br />
            res.Add(new TypedValue((int)LispDataType.Text, "value"));<br />
            res.Add(new TypedValue((int)LispDataType.ListEnd));</p>
<p>            res.Add(new TypedValue((int)LispDataType.ListBegin));<br />
            res.Add(new TypedValue((int)LispDataType.Text, "key2"));<br />
            res.Add(new TypedValue((int)LispDataType.Int32, 123));<br />
            res.Add(new TypedValue((int)LispDataType.ListEnd));</p>
<p>            res.Add(new TypedValue((int)LispDataType.ListEnd));</p>
<p>            return res;<br />
        }</p>
<p>        [LispFunction("kpblc-test-resbuf1")]<br />
        public static ResultBuffer KpblcTestResBufList1(ResultBuffer arg)<br />
        {<br />
            ResultBuffer res = new ResultBuffer();</p>
<p>            res.Add(new TypedValue((int)LispDataType.ListBegin));</p>
<p>            res.Add(new TypedValue((int)LispDataType.ListBegin));<br />
            res.Add(new TypedValue((int)LispDataType.Text, "key"));<br />
            res.Add(new TypedValue((int)LispDataType.DottedPair));<br />
            res.Add(new TypedValue((int)LispDataType.Text, "value"));<br />
            res.Add(new TypedValue((int)LispDataType.ListEnd));</p>
<p>            res.Add(new TypedValue((int)LispDataType.ListBegin));<br />
            res.Add(new TypedValue((int)LispDataType.Text, "key2"));<br />
            res.Add(new TypedValue((int)LispDataType.DottedPair));<br />
            res.Add(new TypedValue((int)LispDataType.Int32, 123));<br />
            res.Add(new TypedValue((int)LispDataType.ListEnd));</p>
<p>            res.Add(new TypedValue((int)LispDataType.ListEnd));</p>
<p>            return res;<br />
        }</p>
<p>        #endregion<br />
    }<br />
</code><br />
в том году на старом форуме в начале февраля разбирались</p>
]]></content:encoded>
	</item>
	<item>
		<title>От: drz</title>
		<link>https://autolisp.ru/2025/02/03/lisp-from-net-nc24-with-lisperror/comment-page-1/#comment-115323</link>
		<dc:creator><![CDATA[drz]]></dc:creator>
		<pubDate>Mon, 03 Feb 2025 09:00:33 +0000</pubDate>
		<guid isPermaLink="false">https://autolisp.ru/?p=5095#comment-115323</guid>
		<description><![CDATA[почему ты решил, что должно быть static?
https://github.com/ADN-DevTech/AutoCAD-Net-Wizards/blob/master/AutoCAD-Plugin-Template/ExamplePlugin/myCommands.cs
https://github.com/ADN-DevTech/AutoCAD-Net-Wizards/blob/ForAutoCAD2024/AutoCADNetWizardsInstaller/Output/AutoCAD%20CSharp%20plug-in/myCommands.cs
===================
учитывая, что МАЭСТРО не поправил и по видимому все собралось и заработало в АК, этот жеж код работает у меня в нано
https://adn-cis.org/forum/index.php?topic=10382.msg48321#msg48321

кстати в SDK АК2016
`
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.ApplicationServices;
...
[LispFunction(&quot;c:helloworld&quot;)]
public void hw(ResultBuffer args)
{
    Editor ed = 
        Application.DocumentManager.MdiActiveDocument.Editor;
    ed.WriteMessage(&#039;\n&#039; + &quot;Hello World!&quot; + &#039;\n&#039;);
}
`
потом появился static]]></description>
		<content:encoded><![CDATA[<p>почему ты решил, что должно быть static?<br />
<a href="https://github.com/ADN-DevTech/AutoCAD-Net-Wizards/blob/master/AutoCAD-Plugin-Template/ExamplePlugin/myCommands.cs" rel="nofollow">https://github.com/ADN-DevTech/AutoCAD-Net-Wizards/blob/master/AutoCAD-Plugin-Template/ExamplePlugin/myCommands.cs</a><br />
<a href="https://github.com/ADN-DevTech/AutoCAD-Net-Wizards/blob/ForAutoCAD2024/AutoCADNetWizardsInstaller/Output/AutoCAD%20CSharp%20plug-in/myCommands.cs" rel="nofollow">https://github.com/ADN-DevTech/AutoCAD-Net-Wizards/blob/ForAutoCAD2024/AutoCADNetWizardsInstaller/Output/AutoCAD%20CSharp%20plug-in/myCommands.cs</a><br />
===================<br />
учитывая, что МАЭСТРО не поправил и по видимому все собралось и заработало в АК, этот жеж код работает у меня в нано<br />
<a href="https://adn-cis.org/forum/index.php?topic=10382.msg48321#msg48321" rel="nofollow">https://adn-cis.org/forum/index.php?topic=10382.msg48321#msg48321</a></p>
<p>кстати в SDK АК2016<br />
<code><br />
using Autodesk.AutoCAD.Runtime;<br />
using Autodesk.AutoCAD.EditorInput;<br />
using Autodesk.AutoCAD.ApplicationServices;<br />
...<br />
[LispFunction("c:helloworld")]<br />
public void hw(ResultBuffer args)<br />
{<br />
    Editor ed =<br />
        Application.DocumentManager.MdiActiveDocument.Editor;<br />
    ed.WriteMessage('\n' + "Hello World!" + '\n');<br />
}<br />
</code><br />
потом появился static</p>
]]></content:encoded>
	</item>
</channel>
</rss>
