Ver Fonte

CPG 插件 2025.4.15 选择容差版

蘭雅sRGB há 2 semanas atrás
pai
commit
b3e48ea6f8

+ 5 - 5
09_BoundaryGroup/ToolsBox.cpp

@@ -251,13 +251,13 @@ intptr_t CALLBACK ToolsBoxPlugin::DlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, L
         UPDATE_INFO_ACTIVE_CDRWND
         break;
 
-      case IDC_CQL_SIZE:
-        cql_SameSize(cdr);
-
+      case IDC_CQL_SIZE: {
+        double exp = GetTextValue(hDlg, EXP_TEXT);
+        cql_SameSize(cdr, exp);
         UPDATE_INFO_ACTIVE_CDRWND
-        break;
+      } break;
 
-      case IDC_CLEAR_FILL: {
+      case IDC_DRAW_RECT: {
         double exp = GetTextValue(hDlg, EXP_TEXT);
         AutoMakeSelection(cdr);
         BBox_DrawRectangle(cdr, exp);

+ 3 - 3
09_BoundaryGroup/ToolsBox.rc

@@ -14,16 +14,16 @@
 // Dialog resources
 //
 LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
-IDD_TOOLS_BOX DIALOGEX 0, 0, 134, 125
+IDD_TOOLS_BOX DIALOGEX 0, 0, 138, 125
 STYLE DS_MODALFRAME | DS_SHELLFONT | WS_CAPTION | WS_POPUP | WS_SYSMENU
 CAPTION "蘭雅 CPG 插件 福利群版"
 FONT 8, "MS Shell Dlg", 135, 0, 1
 {
     AUTOCHECKBOX    "调试->高级模式", DEBUG_FLG, 142, 8, 70, 8, 0, WS_EX_LEFT
-    CTEXT           "蘭雅 CorelDRAW CPG 插件\n2024.8.30 异形群组版", INFO_TEXT, 5, 104, 124, 18, SS_CENTER, WS_EX_LEFT
+    CTEXT           "蘭雅 CorelDRAW CPG 插件\n2025.4.15 选择容差版", INFO_TEXT, 5, 104, 124, 18, SS_CENTER, WS_EX_LEFT
     PUSHBUTTON      "方框智能群组", IDC_BOX_GROUP, 69, 2, 56, 20, 0, WS_EX_LEFT
     PUSHBUTTON      "CQL轮廓色相同", IDC_CQL_OUTLINE, 4, 62, 59, 19, 0, WS_EX_LEFT
-    PUSHBUTTON      "边界画矩形", IDC_CLEAR_FILL, 69, 42, 56, 19, 0, WS_EX_LEFT
+    PUSHBUTTON      "边界画矩形", IDC_DRAW_RECT, 69, 42, 56, 19, 0, WS_EX_LEFT
     PUSHBUTTON      "批量镜像", IDC_SR_FLIP, 69, 62, 56, 19, 0, WS_EX_LEFT
     PUSHBUTTON      "CQL颜色相同", IDC_CQL_FILL, 4, 82, 59, 19, 0, WS_EX_LEFT
     PUSHBUTTON      "CQL尺寸相同", IDC_CQL_SIZE, 69, 82, 56, 19, 0, WS_EX_LEFT

+ 14 - 7
09_BoundaryGroup/cdrapi.cpp

@@ -28,14 +28,21 @@ void Active_CorelWindows(HWND hDlg)
 }
 
 double GetTextValue(HWND hDlg, int IDITEM) {
-    char ibuf[64];
-    memset(ibuf, 0, sizeof(ibuf));
-    GetWindowText(::GetDlgItem(hDlg, IDITEM), ibuf, sizeof(ibuf));
-    double exp = 0.0;
-    sscanf_s(ibuf, "%lf", &exp);
-    return exp;
-}
+  char ibuf[64];
+  memset(ibuf, 0, sizeof(ibuf));
+
+  // 获取文本
+  if (GetWindowText(::GetDlgItem(hDlg, IDITEM), ibuf, sizeof(ibuf)) == 0) {
+      return 0.0; 
+  }
 
+  double exp = 0.0;
+  if (sscanf_s(ibuf, "%lf", &exp) != 1) {
+      return 0.0; 
+  }
+
+  return exp;
+}
 void PutTextValue(HWND hDlg, int IDITEM, char *buf) {
   SetWindowText(::GetDlgItem(hDlg, IDITEM), buf);
 }

+ 3 - 2
09_BoundaryGroup/cdrapp.cpp

@@ -54,13 +54,14 @@ bool cql_FillColor(corel *cdr)
     return true;
 }
 
-bool cql_SameSize(corel *cdr)
+bool cql_SameSize(corel *cdr, double exp)
 {
     cdr->ActiveDocument->Unit = cdrMillimeter;
     auto s = cdr->ActiveShape;
 
+    exp += 0.01;
     char buf[256] = { 0 };
-    sprintf(buf, "@width = {%lf mm} and @height = {%lf mm}", s->SizeWidth, s->SizeHeight);
+    sprintf(buf, "(@com.SizeWidth - %lf).abs() <  %lf and (@com.SizeHeight - %lf).abs() <  %lf", s->SizeWidth, exp, s->SizeHeight, exp);
     auto cql = _bstr_t(buf);
 
     //  MessageBox(NULL, cql, "cql 尺寸相同", MB_ICONSTOP);

+ 1 - 1
09_BoundaryGroup/cdrapp.h

@@ -6,7 +6,7 @@
 bool fill_red(corel *cdr);
 bool cql_OutlineColor(corel *cdr);
 bool cql_FillColor(corel *cdr);
-bool cql_SameSize(corel *cdr);
+bool cql_SameSize(corel *cdr, double exp);
 bool Shapes_Filp(corel *cdr);
 bool Shapes_Filp(corel *cdr);
 bool Clear_Fill(corel *cdr);

+ 1 - 1
09_BoundaryGroup/resource.h

@@ -4,11 +4,11 @@
 
 #define IDD_TOOLS_BOX                           100
 #define IDI_ICON1                               101
+#define IDC_DRAW_RECT                           40000
 #define IDC_CQL_FILL                            40001
 #define IDC_CQL_OUTLINE                         40002
 #define IDC_CQL_SIZE                            40003
 #define IDC_SR_FLIP                             40004
-#define IDC_CLEAR_FILL                          40005
 #define IDC_CDR2AI                              40006
 #define IDC_AI2CDR                              40007
 #define EXP_LT                                  40008

+ 1 - 1
09_BoundaryGroup/vbadll.cpp

@@ -34,7 +34,7 @@ try {
         break;
 
         case 7:
-            cql_SameSize(cdr);
+            cql_SameSize(cdr, x);
         break;
 
         case 8: