<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Help, AcDbSortentsTable Class is not working properly in ObjectARX 2019 in ObjectARX Forum</title>
    <link>https://forums.autodesk.com/t5/objectarx-forum/help-acdbsortentstable-class-is-not-working-properly-in/m-p/7893118#M6817</link>
    <description>&lt;P&gt;hello all:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;For INSERT(AcDbBlockTableRecord), non-Model_Space or Paper_Space&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;AcDbSortentsTable Class is not working properly in ObjectARX 2019.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The following code is the entity or selection set , according to the blocktable space belonging to draworder(moveBottom) operation, the code is normal in AUTOCAD 2004-2018, but no effect in 2019.&lt;BR /&gt;es = pSt-&amp;gt;moveToBottom(ids );&lt;BR /&gt;The return value of es is eOk,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Ask for help.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;thanks.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="搜狗截图20180329151444.png" style="width: 705px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/481912i09A6BB3255EA52BF/image-size/large?v=v2&amp;amp;px=999" role="button" title="搜狗截图20180329151444.png" alt="搜狗截图20180329151444.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="搜狗截图20180329151753.png" style="width: 705px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/481917i1A021DBDF64312F5/image-size/large?v=v2&amp;amp;px=999" role="button" title="搜狗截图20180329151753.png" alt="搜狗截图20180329151753.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;int moveToBottom()
{
	resbuf *rb = ads_getargs();
	if (!rb)
		return RSRSLT;
	AcDbObjectIdArray ids, ids1;
	AcDbObjectId id;
	Acad::ErrorStatus es;
	int i = 0;
	AcDbObjectId ownerId;
	while (rb) {
		if (rb-&amp;gt;restype == RTENAME) {
			if (acdbGetObjectId(id, rb-&amp;gt;resval.rlname) == eOk)
			{
				if (!i)
				{
					AcDbEntity *pEnt;
					es = acdbOpenObject(pEnt, id, kForRead);
					if (es == eOk)
					{
						ownerId = pEnt-&amp;gt;ownerId();
						pEnt-&amp;gt;close();
					}
					else
						return RSRSLT;
				}
				i = 1;
				ids.append(id);
			}
		}
		else if (rb-&amp;gt;restype == RTPICKS) {
			es = XdDbUtils::getIdArrayFromPickSet(rb-&amp;gt;resval.rlname, ids1);
			if (es != Acad::eOk) {
				rb = rb-&amp;gt;rbnext;
				continue;
			}
			if (!i)
			{
				AcDbEntity *pEnt;
				es = acdbOpenObject(pEnt, ids1[0], kForRead);
				if (es == eOk)
				{
					ownerId = pEnt-&amp;gt;ownerId();
					pEnt-&amp;gt;close();
				}
				else
					return RSRSLT;
			}
			i = 1;
			ids.append(ids1);
		}
		rb = rb-&amp;gt;rbnext;
	}
	if (ids.isEmpty())
		return RSRSLT;

	AcDbSortentsTable *pSt=NULL;

	AcDbBlockTableRecord *pRec;
	if (Acad::eOk != acdbOpenObject(pRec, ownerId, AcDb::kForRead))
		return RSRSLT;
	AcDbObjectId ext_id = pRec-&amp;gt;extensionDictionary();
	if (AcDbObjectId::kNull == ext_id)
	{
		if (Acad::eOk != pRec-&amp;gt;upgradeOpen())
		{
			pRec-&amp;gt;close();
			return RSRSLT;
		}
		pRec-&amp;gt;createExtensionDictionary();
		ext_id = pRec-&amp;gt;extensionDictionary();
		if (AcDbObjectId::kNull == ext_id)
		{
			pRec-&amp;gt;close();
			return RSRSLT;
		}
	}
	pRec-&amp;gt;close();
	AcDbDictionary *pExt;
	Acad::ErrorStatus es = acdbOpenObject(pExt, ext_id, AcDb::kForRead);
	if (Acad::eOk != es)
		return RSRSLT;
	AcDbObject *pObj;
	if (Acad::eOk != pExt-&amp;gt;getAt(_T("ACAD_SORTENTS"), pObj, AcDb::kForWrite))
	{
		if (Acad::eOk != pExt-&amp;gt;upgradeOpen())
		{
			pExt-&amp;gt;close();
			return RSRSLT;
		}
		pSt = new AcDbSortentsTable;
		if (NULL == pSt)
		{
			pExt-&amp;gt;close();
			return NULL;
		}
		AcDbObjectId new_id;
		if (Acad::eOk != pExt-&amp;gt;setAt(_T("ACAD_SORTENTS"), pSt, new_id))
		{
			delete pSt;
			pExt-&amp;gt;close();
			return NULL;
		}
	}
	else {
		pSt = (AcDbSortentsTable *)pObj;
	}
	pExt-&amp;gt;close();
        pSt-&amp;gt;setBlockId(ownerId); 	
	es = pSt-&amp;gt;moveToBottom(ids);
	pSt-&amp;gt;close();
	acedUpdateDisplay();
	ads_rett();
	return RSRSLT;
}&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Thu, 29 Mar 2018 07:19:05 GMT</pubDate>
    <dc:creator>7598165</dc:creator>
    <dc:date>2018-03-29T07:19:05Z</dc:date>
    <item>
      <title>Help, AcDbSortentsTable Class is not working properly in ObjectARX 2019</title>
      <link>https://forums.autodesk.com/t5/objectarx-forum/help-acdbsortentstable-class-is-not-working-properly-in/m-p/7893118#M6817</link>
      <description>&lt;P&gt;hello all:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;For INSERT(AcDbBlockTableRecord), non-Model_Space or Paper_Space&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;AcDbSortentsTable Class is not working properly in ObjectARX 2019.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The following code is the entity or selection set , according to the blocktable space belonging to draworder(moveBottom) operation, the code is normal in AUTOCAD 2004-2018, but no effect in 2019.&lt;BR /&gt;es = pSt-&amp;gt;moveToBottom(ids );&lt;BR /&gt;The return value of es is eOk,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Ask for help.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;thanks.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="搜狗截图20180329151444.png" style="width: 705px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/481912i09A6BB3255EA52BF/image-size/large?v=v2&amp;amp;px=999" role="button" title="搜狗截图20180329151444.png" alt="搜狗截图20180329151444.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="搜狗截图20180329151753.png" style="width: 705px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/481917i1A021DBDF64312F5/image-size/large?v=v2&amp;amp;px=999" role="button" title="搜狗截图20180329151753.png" alt="搜狗截图20180329151753.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;int moveToBottom()
{
	resbuf *rb = ads_getargs();
	if (!rb)
		return RSRSLT;
	AcDbObjectIdArray ids, ids1;
	AcDbObjectId id;
	Acad::ErrorStatus es;
	int i = 0;
	AcDbObjectId ownerId;
	while (rb) {
		if (rb-&amp;gt;restype == RTENAME) {
			if (acdbGetObjectId(id, rb-&amp;gt;resval.rlname) == eOk)
			{
				if (!i)
				{
					AcDbEntity *pEnt;
					es = acdbOpenObject(pEnt, id, kForRead);
					if (es == eOk)
					{
						ownerId = pEnt-&amp;gt;ownerId();
						pEnt-&amp;gt;close();
					}
					else
						return RSRSLT;
				}
				i = 1;
				ids.append(id);
			}
		}
		else if (rb-&amp;gt;restype == RTPICKS) {
			es = XdDbUtils::getIdArrayFromPickSet(rb-&amp;gt;resval.rlname, ids1);
			if (es != Acad::eOk) {
				rb = rb-&amp;gt;rbnext;
				continue;
			}
			if (!i)
			{
				AcDbEntity *pEnt;
				es = acdbOpenObject(pEnt, ids1[0], kForRead);
				if (es == eOk)
				{
					ownerId = pEnt-&amp;gt;ownerId();
					pEnt-&amp;gt;close();
				}
				else
					return RSRSLT;
			}
			i = 1;
			ids.append(ids1);
		}
		rb = rb-&amp;gt;rbnext;
	}
	if (ids.isEmpty())
		return RSRSLT;

	AcDbSortentsTable *pSt=NULL;

	AcDbBlockTableRecord *pRec;
	if (Acad::eOk != acdbOpenObject(pRec, ownerId, AcDb::kForRead))
		return RSRSLT;
	AcDbObjectId ext_id = pRec-&amp;gt;extensionDictionary();
	if (AcDbObjectId::kNull == ext_id)
	{
		if (Acad::eOk != pRec-&amp;gt;upgradeOpen())
		{
			pRec-&amp;gt;close();
			return RSRSLT;
		}
		pRec-&amp;gt;createExtensionDictionary();
		ext_id = pRec-&amp;gt;extensionDictionary();
		if (AcDbObjectId::kNull == ext_id)
		{
			pRec-&amp;gt;close();
			return RSRSLT;
		}
	}
	pRec-&amp;gt;close();
	AcDbDictionary *pExt;
	Acad::ErrorStatus es = acdbOpenObject(pExt, ext_id, AcDb::kForRead);
	if (Acad::eOk != es)
		return RSRSLT;
	AcDbObject *pObj;
	if (Acad::eOk != pExt-&amp;gt;getAt(_T("ACAD_SORTENTS"), pObj, AcDb::kForWrite))
	{
		if (Acad::eOk != pExt-&amp;gt;upgradeOpen())
		{
			pExt-&amp;gt;close();
			return RSRSLT;
		}
		pSt = new AcDbSortentsTable;
		if (NULL == pSt)
		{
			pExt-&amp;gt;close();
			return NULL;
		}
		AcDbObjectId new_id;
		if (Acad::eOk != pExt-&amp;gt;setAt(_T("ACAD_SORTENTS"), pSt, new_id))
		{
			delete pSt;
			pExt-&amp;gt;close();
			return NULL;
		}
	}
	else {
		pSt = (AcDbSortentsTable *)pObj;
	}
	pExt-&amp;gt;close();
        pSt-&amp;gt;setBlockId(ownerId); 	
	es = pSt-&amp;gt;moveToBottom(ids);
	pSt-&amp;gt;close();
	acedUpdateDisplay();
	ads_rett();
	return RSRSLT;
}&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 29 Mar 2018 07:19:05 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/objectarx-forum/help-acdbsortentstable-class-is-not-working-properly-in/m-p/7893118#M6817</guid>
      <dc:creator>7598165</dc:creator>
      <dc:date>2018-03-29T07:19:05Z</dc:date>
    </item>
    <item>
      <title>Re: Help, AcDbSortentsTable Class is not working properly in ObjectARX 2019</title>
      <link>https://forums.autodesk.com/t5/objectarx-forum/help-acdbsortentstable-class-is-not-working-properly-in/m-p/7900951#M6818</link>
      <description>&lt;P&gt;Is the 2019 ARX bug?&lt;/P&gt;&lt;P&gt;who can help me?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;thanks!!&lt;/P&gt;</description>
      <pubDate>Mon, 02 Apr 2018 13:23:09 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/objectarx-forum/help-acdbsortentstable-class-is-not-working-properly-in/m-p/7900951#M6818</guid>
      <dc:creator>7598165</dc:creator>
      <dc:date>2018-04-02T13:23:09Z</dc:date>
    </item>
    <item>
      <title>Re: Help, AcDbSortentsTable Class is not working properly in ObjectARX 2019</title>
      <link>https://forums.autodesk.com/t5/objectarx-forum/help-acdbsortentstable-class-is-not-working-properly-in/m-p/7906667#M6819</link>
      <description>&lt;P&gt;Thank you for reporting.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;We have updated the Engineering team with this issue.&lt;/P&gt;</description>
      <pubDate>Wed, 04 Apr 2018 06:57:24 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/objectarx-forum/help-acdbsortentstable-class-is-not-working-properly-in/m-p/7906667#M6819</guid>
      <dc:creator>deepak.a.s.nadig</dc:creator>
      <dc:date>2018-04-04T06:57:24Z</dc:date>
    </item>
    <item>
      <title>Re: Help, AcDbSortentsTable Class is not working properly in ObjectARX 2019</title>
      <link>https://forums.autodesk.com/t5/objectarx-forum/help-acdbsortentstable-class-is-not-working-properly-in/m-p/9322776#M6820</link>
      <description>&lt;P&gt;Any update with this? It is not working either for me in Autocad2019, but it is in 2018&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;(defun c:test ( / acblk acdoc acsel name obj processed )&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;(setq acdoc (vla-get-activedocument (vlax-get-acad-object))&lt;BR /&gt;acblk (vla-get-blocks acdoc)&lt;BR /&gt;)&lt;BR /&gt;(if (ssget "_X" '((0 . "INSERT")))&lt;BR /&gt;(progn&lt;BR /&gt;(vlax-for block (setq acsel (vla-get-activeselectionset acdoc))&lt;BR /&gt;(if (not (member (setq name (vla-get-name block)) processed))&lt;BR /&gt;(&lt;BR /&gt;(lambda ( / lst )&lt;BR /&gt;(vlax-for obj (vla-item acblk name)&lt;BR /&gt;(if (eq "AcDbHatch" (vla-get-objectname obj))&lt;BR /&gt;(progn&lt;BR /&gt;(setq lst (cons obj lst))&lt;BR /&gt;(vla-put-color obj "5")&lt;BR /&gt;)&lt;BR /&gt;)&lt;BR /&gt;)&lt;BR /&gt;(if lst&lt;BR /&gt;(vla-movetobottom (LM:SortentsTable (vla-item acblk name))&lt;BR /&gt;(vlax-make-variant&lt;BR /&gt;(vlax-safearray-fill&lt;BR /&gt;(vlax-make-safearray vlax-vbobject (cons 0 (1- (length lst)))) lst&lt;BR /&gt;)&lt;BR /&gt;)&lt;BR /&gt;)&lt;BR /&gt;)&lt;BR /&gt;(setq processed (cons name processed))&lt;BR /&gt;)&lt;BR /&gt;)&lt;BR /&gt;)&lt;BR /&gt;)&lt;/P&gt;&lt;P&gt;(vla-regen acdoc acallviewports)&lt;BR /&gt;)&lt;BR /&gt;)&lt;BR /&gt;(princ)&lt;BR /&gt;)&lt;/P&gt;&lt;P&gt;(defun LM:SortentsTable ( space / dict result )&lt;BR /&gt;(cond&lt;BR /&gt;(&lt;BR /&gt;(not&lt;BR /&gt;(vl-catch-all-error-p&lt;BR /&gt;(setq result&lt;BR /&gt;(vl-catch-all-apply 'vla-item&lt;BR /&gt;(list (setq dict (vla-GetExtensionDictionary space)) "ACAD_SORTENTS")&lt;BR /&gt;)&lt;BR /&gt;)&lt;BR /&gt;)&lt;BR /&gt;)&lt;BR /&gt;result&lt;BR /&gt;)&lt;BR /&gt;( (vla-AddObject dict "ACAD_SORTENTS" "AcDbSortentsTable") )&lt;BR /&gt;)&lt;BR /&gt;)&lt;BR /&gt;(vl-load-com) (princ)&lt;/P&gt;</description>
      <pubDate>Mon, 17 Feb 2020 12:41:25 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/objectarx-forum/help-acdbsortentstable-class-is-not-working-properly-in/m-p/9322776#M6820</guid>
      <dc:creator>bim8QKRA</dc:creator>
      <dc:date>2020-02-17T12:41:25Z</dc:date>
    </item>
  </channel>
</rss>

