feat: implement CAD template drawing service for opening templates and removing specific parameter annotations.
This commit is contained in:
parent
09ab4cff9e
commit
2230e554f9
@ -454,6 +454,16 @@ namespace CadParamPluging.Cad
|
|||||||
return new NoteApplyResult { Applied = false, Message = "未找到目标空间,跳过附注替换。" };
|
return new NoteApplyResult { Applied = false, Message = "未找到目标空间,跳过附注替换。" };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Func<string, string> getValueW = (k) =>
|
||||||
|
{
|
||||||
|
var val = bag.GetString(k);
|
||||||
|
if (k != null && (k.StartsWith("Hardness", StringComparison.OrdinalIgnoreCase) || k.StartsWith("MarkingContent", StringComparison.OrdinalIgnoreCase)))
|
||||||
|
{
|
||||||
|
if (bag.GetString(k + "_ShowInNote") == "0") return "__SKIP_NOTE__";
|
||||||
|
}
|
||||||
|
return val;
|
||||||
|
};
|
||||||
|
|
||||||
// 1. 优先查找已经标记过的 Note Entity (重生成场景)
|
// 1. 优先查找已经标记过的 Note Entity (重生成场景)
|
||||||
foreach (ObjectId id in space)
|
foreach (ObjectId id in space)
|
||||||
{
|
{
|
||||||
@ -462,7 +472,7 @@ namespace CadParamPluging.Cad
|
|||||||
{
|
{
|
||||||
// 找到了之前的附注,使用存储的模板重新渲染
|
// 找到了之前的附注,使用存储的模板重新渲染
|
||||||
var effectiveStored = NoteTemplateEngine.BuildEffectiveValueKeyBindings(schema.NoteBindings);
|
var effectiveStored = NoteTemplateEngine.BuildEffectiveValueKeyBindings(schema.NoteBindings);
|
||||||
var renderedStored = NoteTemplateEngine.Render(storedTemplate, effectiveStored, bag.GetString);
|
var renderedStored = NoteTemplateEngine.Render(storedTemplate, effectiveStored, getValueW);
|
||||||
|
|
||||||
ApplyNoteTextToObject(tr, id, "ExistingTaggedNote", renderedStored, null);
|
ApplyNoteTextToObject(tr, id, "ExistingTaggedNote", renderedStored, null);
|
||||||
|
|
||||||
@ -517,7 +527,7 @@ namespace CadParamPluging.Cad
|
|||||||
var insertPoint = new Point3d(insertX, insertY, 0);
|
var insertPoint = new Point3d(insertX, insertY, 0);
|
||||||
|
|
||||||
var effectiveForCreation = NoteTemplateEngine.BuildEffectiveValueKeyBindings(schema.NoteBindings);
|
var effectiveForCreation = NoteTemplateEngine.BuildEffectiveValueKeyBindings(schema.NoteBindings);
|
||||||
var renderedForCreation = NoteTemplateEngine.Render(schema.NoteTemplateText, effectiveForCreation, bag.GetString);
|
var renderedForCreation = NoteTemplateEngine.Render(schema.NoteTemplateText, effectiveForCreation, getValueW);
|
||||||
|
|
||||||
var mt = new MText();
|
var mt = new MText();
|
||||||
mt.Contents = ToMTextContents(renderedForCreation);
|
mt.Contents = ToMTextContents(renderedForCreation);
|
||||||
@ -671,7 +681,7 @@ namespace CadParamPluging.Cad
|
|||||||
}
|
}
|
||||||
|
|
||||||
var effective = NoteTemplateEngine.BuildEffectiveValueKeyBindings(schema.NoteBindings);
|
var effective = NoteTemplateEngine.BuildEffectiveValueKeyBindings(schema.NoteBindings);
|
||||||
var rendered = NoteTemplateEngine.Render(templateText, effective, bag.GetString);
|
var rendered = NoteTemplateEngine.Render(templateText, effective, getValueW);
|
||||||
best.Apply(rendered);
|
best.Apply(rendered);
|
||||||
|
|
||||||
if (!best.TargetId.IsNull)
|
if (!best.TargetId.IsNull)
|
||||||
|
|||||||
@ -242,11 +242,14 @@ namespace CadParamPluging.Common
|
|||||||
if (map.TryGetValue(currentIdx, out var key) && getValue != null)
|
if (map.TryGetValue(currentIdx, out var key) && getValue != null)
|
||||||
{
|
{
|
||||||
var val = getValue(key);
|
var val = getValue(key);
|
||||||
// Check for strict "空"
|
if (string.Equals(val, "__SKIP_NOTE__", StringComparison.OrdinalIgnoreCase))
|
||||||
if (string.Equals(val, "空", StringComparison.OrdinalIgnoreCase))
|
{
|
||||||
|
shouldSkip = true;
|
||||||
|
}
|
||||||
|
else if (string.Equals(val, "空", StringComparison.OrdinalIgnoreCase))
|
||||||
{
|
{
|
||||||
// Exception: MarkingContent (标刻内容) should NOT cause line skip
|
// Exception: MarkingContent (标刻内容) should NOT cause line skip
|
||||||
if (!string.Equals(key, "MarkingContent", StringComparison.OrdinalIgnoreCase))
|
if (key == null || !key.StartsWith("MarkingContent", StringComparison.OrdinalIgnoreCase))
|
||||||
{
|
{
|
||||||
shouldSkip = true;
|
shouldSkip = true;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -426,8 +426,45 @@ namespace CadParamPluging.UI
|
|||||||
_toolTip.SetToolTip(ctrl, extraToolTip);
|
_toolTip.SetToolTip(ctrl, extraToolTip);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Control finalCtrl = ctrl;
|
||||||
|
if (string.Equals(def.Key, "Hardness", StringComparison.OrdinalIgnoreCase) ||
|
||||||
|
string.Equals(def.Key, "MarkingContent", StringComparison.OrdinalIgnoreCase))
|
||||||
|
{
|
||||||
|
var flow = new FlowLayoutPanel
|
||||||
|
{
|
||||||
|
AutoSize = true,
|
||||||
|
FlowDirection = FlowDirection.LeftToRight,
|
||||||
|
WrapContents = false,
|
||||||
|
Margin = new Padding(0)
|
||||||
|
};
|
||||||
|
|
||||||
|
bool isChecked = true;
|
||||||
|
if (_loadedDefaults != null)
|
||||||
|
{
|
||||||
|
var showVal = _loadedDefaults.GetString(controlKey + "_ShowInNote");
|
||||||
|
if (showVal != null)
|
||||||
|
{
|
||||||
|
isChecked = showVal == "1" || showVal.Equals("true", StringComparison.OrdinalIgnoreCase);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var chk = new CheckBox
|
||||||
|
{
|
||||||
|
Text = "显示在附注中",
|
||||||
|
AutoSize = true,
|
||||||
|
Checked = isChecked,
|
||||||
|
Margin = new Padding(10, 3, 0, 0)
|
||||||
|
};
|
||||||
|
|
||||||
|
_controlsByKey[controlKey + "_ShowInNote"] = chk;
|
||||||
|
chk.CheckedChanged += (_, __) => UpdateNotePreviews();
|
||||||
|
|
||||||
|
flow.Controls.Add(ctrl);
|
||||||
|
flow.Controls.Add(chk);
|
||||||
|
finalCtrl = flow;
|
||||||
|
}
|
||||||
|
|
||||||
_grid.Controls.Add(lbl, 0, rowIdx);
|
_grid.Controls.Add(lbl, 0, rowIdx);
|
||||||
_grid.Controls.Add(ctrl, 1, rowIdx);
|
_grid.Controls.Add(finalCtrl, 1, rowIdx);
|
||||||
_controlsByKey[controlKey] = ctrl;
|
_controlsByKey[controlKey] = ctrl;
|
||||||
_defsByControlKey[controlKey] = def;
|
_defsByControlKey[controlKey] = def;
|
||||||
|
|
||||||
@ -617,7 +654,19 @@ namespace CadParamPluging.UI
|
|||||||
|
|
||||||
var tempBag = CollectBagFromUi();
|
var tempBag = CollectBagFromUi();
|
||||||
var effective = NoteTemplateEngine.BuildEffectiveValueKeyBindings(_schema.NoteBindings);
|
var effective = NoteTemplateEngine.BuildEffectiveValueKeyBindings(_schema.NoteBindings);
|
||||||
_rtbNoteRendered.Text = NoteTemplateEngine.Render(noteTemplate, effective, tempBag.GetString);
|
Func<string, string> getValueW = (k) =>
|
||||||
|
{
|
||||||
|
var val = tempBag.GetString(k);
|
||||||
|
if (k != null && (k.StartsWith("Hardness", StringComparison.OrdinalIgnoreCase) || k.StartsWith("MarkingContent", StringComparison.OrdinalIgnoreCase)))
|
||||||
|
{
|
||||||
|
if (tempBag.GetString(k + "_ShowInNote") == "0") return "__SKIP_NOTE__";
|
||||||
|
}
|
||||||
|
return val;
|
||||||
|
};
|
||||||
|
|
||||||
|
_rtbNoteNumbered.Text = NoteTemplateEngine.BuildNumberedPreviewText(noteTemplate);
|
||||||
|
|
||||||
|
_rtbNoteRendered.Text = NoteTemplateEngine.Render(noteTemplate, effective, getValueW);
|
||||||
}
|
}
|
||||||
|
|
||||||
private ParamBag CollectBagFromUi()
|
private ParamBag CollectBagFromUi()
|
||||||
@ -630,6 +679,15 @@ namespace CadParamPluging.UI
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (key.EndsWith("_ShowInNote", StringComparison.OrdinalIgnoreCase))
|
||||||
|
{
|
||||||
|
if (ctrl is CheckBox chk)
|
||||||
|
{
|
||||||
|
bag.Set(key, chk.Checked ? "1" : "0");
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (!_defsByControlKey.TryGetValue(key, out var def) || def == null)
|
if (!_defsByControlKey.TryGetValue(key, out var def) || def == null)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
@ -813,6 +871,15 @@ namespace CadParamPluging.UI
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (key.EndsWith("_ShowInNote", StringComparison.OrdinalIgnoreCase))
|
||||||
|
{
|
||||||
|
if (ctrl is CheckBox chk)
|
||||||
|
{
|
||||||
|
bag.Set(key, chk.Checked ? "1" : "0");
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (!_defsByControlKey.TryGetValue(key, out var def) || def == null)
|
if (!_defsByControlKey.TryGetValue(key, out var def) || def == null)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
|
|||||||
BIN
runtest.cs
Normal file
BIN
runtest.cs
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user