fix: AcDbX3dSolid 正确性小修(失败留痕/缓存失效/GSMarker/死代码)
- StringToRegion 两个重载在 fixACISFormat 拒绝时打印长度与 SAT 首行, 原来完全静默,现场只表现为构件消失,无法定位 - ReCreate 统一失效绘制缓存:清 m_pSolidDraw、m_arRegionFaces、 m_pSubDMeshDraw。原来只有 AddMove/ResetMove/AddRotate/ResetRotate 清, TransformBy/SetSolidData/SetOrgPoint 调完 ReCreate 后 Draw3d 仍画旧几何 - GSMarker 改用独立成员 m_nGSMarker,不再借用 m_sszPoint2ds。 后者在 kExtrude/kLoft/kSweep 里存断面/路径串,SetGSMarkerID 会覆盖成数字, 导致 ReCreate 静默失败、几何丢失 - 删除 GetDrawSubDMesh 中 return 之后的 28 行不可达代码 - GetDraw2d / ByJson 补注释说明现状
This commit is contained in:
1 parent
10d1fc00c8
commit
f80ec56189
3 files changed
+54
-45
No files matched your search
@@ -3520,7 +3520,19 @@ AcDbRegion* CoreTools::StringToRegion(const CString & sRegionScrp)
|
||||
{
|
||||
std::string sUtf8 = CoreTools::unicode2Ansii((LPCTSTR)sRegionScrp, CP_UTF8);
|
||||
std::string sNewSrc;
|
||||
if (!fixACISFormat(sUtf8.c_str(), sUtf8.size(), sNewSrc)) return NULL;
|
||||
if (!fixACISFormat(sUtf8.c_str(), sUtf8.size(), sNewSrc))
|
||||
{
|
||||
// 解析失败必须留痕,否则现场只表现为“构件不见了”
|
||||
CString sHead = sRegionScrp;
|
||||
int nLineEnd = sHead.Find(_T('\n'));
|
||||
if (nLineEnd > 0)
|
||||
sHead = sHead.Left(nLineEnd);
|
||||
else
|
||||
sHead = sHead.Left(60);
|
||||
acutPrintf(_T("\nCoreTools::StringToRegion: 数据无效,长度=%d,首行=\"%s\"。"),
|
||||
sRegionScrp.GetLength(), (LPCTSTR)sHead);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
CFile file;
|
||||
CString sFullPath = MakeTempSatPath();
|
||||
@@ -3569,7 +3581,17 @@ AcDbRegion* CoreTools::StringToRegion(const CString & sRegionScrp)
|
||||
AcDbRegion *CoreTools::StringToRegion(Adesk::UInt64 nLen, char *pszReg)
|
||||
{
|
||||
std::string sNewSrc;
|
||||
if (!fixACISFormat(pszReg, (size_t)nLen, sNewSrc)) return NULL;
|
||||
if (!fixACISFormat(pszReg, (size_t)nLen, sNewSrc))
|
||||
{
|
||||
// 解析失败必须留痕,否则现场只表现为“构件不见了”
|
||||
std::string sHead(pszReg, (size_t)(nLen < 60 ? nLen : 60));
|
||||
size_t nLineEnd = sHead.find('\n');
|
||||
if (nLineEnd != std::string::npos)
|
||||
sHead.erase(nLineEnd);
|
||||
acutPrintf(_T("\nCoreTools::StringToRegion: 数据无效,长度=%I64u,首行=\"%S\"。"),
|
||||
nLen, sHead.c_str());
|
||||
return NULL;
|
||||
}
|
||||
|
||||
AcDbRegion *pReg(NULL);
|
||||
CString sFullPath = MakeTempSatPath();
|
||||
|
||||
Reference in new issue
Block a user