pyfemtet 0.7.0__py3-none-any.whl → 0.8.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of pyfemtet might be problematic. Click here for more details.
- pyfemtet/__init__.py +1 -1
- pyfemtet/_message/locales/ja/LC_MESSAGES/messages.mo +0 -0
- pyfemtet/_message/locales/ja/LC_MESSAGES/messages.po +112 -90
- pyfemtet/_message/locales/messages.pot +105 -89
- pyfemtet/_message/messages.py +6 -2
- pyfemtet/_util/dask_util.py +10 -0
- pyfemtet/_util/excel_macro_util.py +16 -4
- pyfemtet/_util/excel_parse_util.py +138 -0
- pyfemtet/_util/sample.xlsx +0 -0
- pyfemtet/brep/__init__.py +0 -3
- pyfemtet/brep/_impl.py +7 -3
- pyfemtet/opt/_femopt.py +69 -31
- pyfemtet/opt/_femopt_core.py +100 -36
- pyfemtet/opt/advanced_samples/excel_ui/(ref) original_project.femprj +0 -0
- pyfemtet/opt/advanced_samples/excel_ui/femtet-macro.xlsm +0 -0
- pyfemtet/opt/advanced_samples/excel_ui/pyfemtet-core.py +291 -0
- pyfemtet/opt/advanced_samples/excel_ui/test-pyfemtet-core.cmd +22 -0
- pyfemtet/opt/advanced_samples/surrogate_model/gal_ex13_create_training_data.py +60 -0
- pyfemtet/opt/advanced_samples/surrogate_model/gal_ex13_create_training_data_jp.py +57 -0
- pyfemtet/opt/advanced_samples/surrogate_model/gal_ex13_optimize_with_surrogate.py +100 -0
- pyfemtet/opt/advanced_samples/surrogate_model/gal_ex13_optimize_with_surrogate_jp.py +90 -0
- pyfemtet/opt/advanced_samples/surrogate_model/gal_ex13_parametric.femprj +0 -0
- pyfemtet/opt/interface/__init__.py +2 -0
- pyfemtet/opt/interface/_base.py +3 -0
- pyfemtet/opt/interface/_excel_interface.py +565 -204
- pyfemtet/opt/interface/_femtet.py +26 -29
- pyfemtet/opt/interface/_surrogate/__init__.py +5 -0
- pyfemtet/opt/interface/_surrogate/_base.py +85 -0
- pyfemtet/opt/interface/_surrogate/_chaospy.py +71 -0
- pyfemtet/opt/interface/_surrogate/_singletaskgp.py +70 -0
- pyfemtet/opt/optimizer/_base.py +30 -19
- pyfemtet/opt/optimizer/_optuna/_optuna.py +20 -8
- pyfemtet/opt/optimizer/_optuna/_pof_botorch.py +60 -18
- pyfemtet/opt/prediction/_base.py +8 -0
- pyfemtet/opt/prediction/single_task_gp.py +85 -62
- pyfemtet/opt/visualization/_complex_components/main_figure_creator.py +5 -5
- pyfemtet/opt/visualization/_complex_components/main_graph.py +7 -1
- pyfemtet/opt/visualization/_complex_components/pm_graph.py +1 -1
- pyfemtet/opt/visualization/_process_monitor/application.py +2 -2
- pyfemtet/opt/visualization/_process_monitor/pages.py +1 -1
- pyfemtet/opt/visualization/result_viewer/pages.py +1 -1
- {pyfemtet-0.7.0.dist-info → pyfemtet-0.8.0.dist-info}/METADATA +3 -2
- {pyfemtet-0.7.0.dist-info → pyfemtet-0.8.0.dist-info}/RECORD +46 -29
- {pyfemtet-0.7.0.dist-info → pyfemtet-0.8.0.dist-info}/WHEEL +1 -1
- {pyfemtet-0.7.0.dist-info → pyfemtet-0.8.0.dist-info}/LICENSE +0 -0
- {pyfemtet-0.7.0.dist-info → pyfemtet-0.8.0.dist-info}/entry_points.txt +0 -0
|
@@ -8,7 +8,7 @@ msgid ""
|
|
|
8
8
|
msgstr ""
|
|
9
9
|
"Project-Id-Version: PROJECT VERSION\n"
|
|
10
10
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
|
11
|
-
"POT-Creation-Date: 2024-
|
|
11
|
+
"POT-Creation-Date: 2024-12-27 09:45+0900\n"
|
|
12
12
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
|
13
13
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
14
14
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
|
@@ -173,351 +173,367 @@ msgstr ""
|
|
|
173
173
|
msgid "Failed to update model in solidworks."
|
|
174
174
|
msgstr ""
|
|
175
175
|
|
|
176
|
+
#: pyfemtet/_message/messages.py:84
|
|
177
|
+
msgid "Probability of feasibility is less than threshold."
|
|
178
|
+
msgstr ""
|
|
179
|
+
|
|
180
|
+
#: pyfemtet/_message/messages.py:85
|
|
181
|
+
msgid "Terminating Excel process..."
|
|
182
|
+
msgstr ""
|
|
183
|
+
|
|
176
184
|
#: pyfemtet/_message/messages.py:86
|
|
177
|
-
msgid "
|
|
185
|
+
msgid "Excel process is terminated."
|
|
178
186
|
msgstr ""
|
|
179
187
|
|
|
180
188
|
#: pyfemtet/_message/messages.py:87
|
|
189
|
+
msgid "Restore Femtet setting of autosave."
|
|
190
|
+
msgstr ""
|
|
191
|
+
|
|
192
|
+
#: pyfemtet/_message/messages.py:90
|
|
193
|
+
msgid "The following features are not supported by the specified optimization method. "
|
|
194
|
+
msgstr ""
|
|
195
|
+
|
|
196
|
+
#: pyfemtet/_message/messages.py:91
|
|
181
197
|
msgid "The parameter set does not match the one added with add_init_parameter."
|
|
182
198
|
msgstr ""
|
|
183
199
|
|
|
184
|
-
#: pyfemtet/_message/messages.py:
|
|
200
|
+
#: pyfemtet/_message/messages.py:92
|
|
185
201
|
msgid "An exception has occurred during FEM update. Current parameters are: "
|
|
186
202
|
msgstr ""
|
|
187
203
|
|
|
188
|
-
#: pyfemtet/_message/messages.py:
|
|
204
|
+
#: pyfemtet/_message/messages.py:93
|
|
189
205
|
msgid "The constraints were not satisfied for the following sets of variables:"
|
|
190
206
|
msgstr ""
|
|
191
207
|
|
|
192
|
-
#: pyfemtet/_message/messages.py:
|
|
208
|
+
#: pyfemtet/_message/messages.py:94
|
|
193
209
|
msgid "Current parameter set cannot update FEM and this optimization method cannot skip current parameter set. The optimization process will be terminated."
|
|
194
210
|
msgstr ""
|
|
195
211
|
|
|
196
|
-
#: pyfemtet/_message/messages.py:
|
|
212
|
+
#: pyfemtet/_message/messages.py:95
|
|
197
213
|
msgid "Optimization has been interrupted. Note that you cannot acquire the OptimizationResult in case of `trust-constr`, `TNC`, `SLSQP` or `COBYLA`."
|
|
198
214
|
msgstr ""
|
|
199
215
|
|
|
200
|
-
#: pyfemtet/_message/messages.py:
|
|
216
|
+
#: pyfemtet/_message/messages.py:96
|
|
201
217
|
msgid "You can use parameter constraint only with BoTorchSampler."
|
|
202
218
|
msgstr ""
|
|
203
219
|
|
|
204
|
-
#: pyfemtet/_message/messages.py:
|
|
220
|
+
#: pyfemtet/_message/messages.py:97
|
|
205
221
|
msgid "Scipy is deterministic, so whether you set a seed or not will not change the results."
|
|
206
222
|
msgstr ""
|
|
207
223
|
|
|
208
|
-
#: pyfemtet/_message/messages.py:
|
|
224
|
+
#: pyfemtet/_message/messages.py:98
|
|
209
225
|
msgid "Start to candidate new parameter set with constraints. This process may take a long time."
|
|
210
226
|
msgstr ""
|
|
211
227
|
|
|
212
|
-
#: pyfemtet/_message/messages.py:
|
|
228
|
+
#: pyfemtet/_message/messages.py:99
|
|
213
229
|
msgid "Updating FEM parameter during evaluating constraints take a long time. Please consider not to use FEM variables in constraint functions and set `update_fem` to False."
|
|
214
230
|
msgstr ""
|
|
215
231
|
|
|
216
|
-
#: pyfemtet/_message/messages.py:
|
|
232
|
+
#: pyfemtet/_message/messages.py:103
|
|
217
233
|
msgid "Connect to Femtet"
|
|
218
234
|
msgstr ""
|
|
219
235
|
|
|
220
|
-
#: pyfemtet/_message/messages.py:
|
|
236
|
+
#: pyfemtet/_message/messages.py:104
|
|
221
237
|
msgid "Analysis model name described in csv does not exist in project."
|
|
222
238
|
msgstr ""
|
|
223
239
|
|
|
224
|
-
#: pyfemtet/_message/messages.py:
|
|
240
|
+
#: pyfemtet/_message/messages.py:105
|
|
225
241
|
msgid "History csv is not read yet. Open your project manually."
|
|
226
242
|
msgstr ""
|
|
227
243
|
|
|
228
|
-
#: pyfemtet/_message/messages.py:
|
|
244
|
+
#: pyfemtet/_message/messages.py:106
|
|
229
245
|
msgid "Cannot read project data from csv. Open your project manually."
|
|
230
246
|
msgstr ""
|
|
231
247
|
|
|
232
|
-
#: pyfemtet/_message/messages.py:
|
|
248
|
+
#: pyfemtet/_message/messages.py:107
|
|
233
249
|
msgid ".femprj file described in csv is not found. Open your project manually."
|
|
234
250
|
msgstr ""
|
|
235
251
|
|
|
236
|
-
#: pyfemtet/_message/messages.py:
|
|
252
|
+
#: pyfemtet/_message/messages.py:108
|
|
237
253
|
msgid "Analysis model name is not specified. Open your model in the project manually."
|
|
238
254
|
msgstr ""
|
|
239
255
|
|
|
240
|
-
#: pyfemtet/_message/messages.py:
|
|
256
|
+
#: pyfemtet/_message/messages.py:110
|
|
241
257
|
msgid "Constraint"
|
|
242
258
|
msgstr ""
|
|
243
259
|
|
|
244
|
-
#: pyfemtet/_message/messages.py:
|
|
260
|
+
#: pyfemtet/_message/messages.py:111
|
|
245
261
|
msgid "feasible"
|
|
246
262
|
msgstr ""
|
|
247
263
|
|
|
248
|
-
#: pyfemtet/_message/messages.py:
|
|
264
|
+
#: pyfemtet/_message/messages.py:112
|
|
249
265
|
msgid "infeasible"
|
|
250
266
|
msgstr ""
|
|
251
267
|
|
|
252
|
-
#: pyfemtet/_message/messages.py:
|
|
268
|
+
#: pyfemtet/_message/messages.py:113
|
|
253
269
|
msgid "Optimality"
|
|
254
270
|
msgstr ""
|
|
255
271
|
|
|
256
|
-
#: pyfemtet/_message/messages.py:
|
|
272
|
+
#: pyfemtet/_message/messages.py:114
|
|
257
273
|
msgid "non dominated"
|
|
258
274
|
msgstr ""
|
|
259
275
|
|
|
260
|
-
#: pyfemtet/_message/messages.py:
|
|
276
|
+
#: pyfemtet/_message/messages.py:115
|
|
261
277
|
msgid "dominated"
|
|
262
278
|
msgstr ""
|
|
263
279
|
|
|
264
|
-
#: pyfemtet/_message/messages.py:
|
|
280
|
+
#: pyfemtet/_message/messages.py:116
|
|
265
281
|
msgid "Hypervolume Plot"
|
|
266
282
|
msgstr ""
|
|
267
283
|
|
|
268
|
-
#: pyfemtet/_message/messages.py:
|
|
284
|
+
#: pyfemtet/_message/messages.py:117
|
|
269
285
|
msgid "Objective Plot"
|
|
270
286
|
msgstr ""
|
|
271
287
|
|
|
272
|
-
#: pyfemtet/_message/messages.py:
|
|
288
|
+
#: pyfemtet/_message/messages.py:118
|
|
273
289
|
msgid "Multi Objective Pair Plot"
|
|
274
290
|
msgstr ""
|
|
275
291
|
|
|
276
|
-
#: pyfemtet/_message/messages.py:
|
|
277
|
-
msgid "trial number"
|
|
292
|
+
#: pyfemtet/_message/messages.py:119
|
|
293
|
+
msgid "Succeeded trial number"
|
|
278
294
|
msgstr ""
|
|
279
295
|
|
|
280
|
-
#: pyfemtet/_message/messages.py:
|
|
296
|
+
#: pyfemtet/_message/messages.py:120
|
|
281
297
|
msgid "All solutions"
|
|
282
298
|
msgstr ""
|
|
283
299
|
|
|
284
|
-
#: pyfemtet/_message/messages.py:
|
|
285
|
-
msgid "Transition of
|
|
300
|
+
#: pyfemtet/_message/messages.py:121
|
|
301
|
+
msgid "Transition of<br>optimal solutions"
|
|
286
302
|
msgstr ""
|
|
287
303
|
|
|
288
|
-
#: pyfemtet/_message/messages.py:
|
|
304
|
+
#: pyfemtet/_message/messages.py:122
|
|
289
305
|
msgid "Target value"
|
|
290
306
|
msgstr ""
|
|
291
307
|
|
|
292
|
-
#: pyfemtet/_message/messages.py:
|
|
308
|
+
#: pyfemtet/_message/messages.py:124
|
|
293
309
|
msgid "Objectives"
|
|
294
310
|
msgstr ""
|
|
295
311
|
|
|
296
|
-
#: pyfemtet/_message/messages.py:
|
|
312
|
+
#: pyfemtet/_message/messages.py:125
|
|
297
313
|
msgid "Objectives (all)"
|
|
298
314
|
msgstr ""
|
|
299
315
|
|
|
300
|
-
#: pyfemtet/_message/messages.py:
|
|
316
|
+
#: pyfemtet/_message/messages.py:127
|
|
301
317
|
msgid "Prediction Model"
|
|
302
318
|
msgstr ""
|
|
303
319
|
|
|
304
|
-
#: pyfemtet/_message/messages.py:
|
|
320
|
+
#: pyfemtet/_message/messages.py:128
|
|
305
321
|
msgid " Recalculate Model"
|
|
306
322
|
msgstr ""
|
|
307
323
|
|
|
308
|
-
#: pyfemtet/_message/messages.py:
|
|
324
|
+
#: pyfemtet/_message/messages.py:129
|
|
309
325
|
msgid " Redraw graph"
|
|
310
326
|
msgstr ""
|
|
311
327
|
|
|
312
|
-
#: pyfemtet/_message/messages.py:
|
|
328
|
+
#: pyfemtet/_message/messages.py:130
|
|
313
329
|
msgid "Parameter"
|
|
314
330
|
msgstr ""
|
|
315
331
|
|
|
316
|
-
#: pyfemtet/_message/messages.py:
|
|
332
|
+
#: pyfemtet/_message/messages.py:131
|
|
317
333
|
msgid "Parameter2"
|
|
318
334
|
msgstr ""
|
|
319
335
|
|
|
320
|
-
#: pyfemtet/_message/messages.py:
|
|
336
|
+
#: pyfemtet/_message/messages.py:132
|
|
321
337
|
msgid "Objective"
|
|
322
338
|
msgstr ""
|
|
323
339
|
|
|
324
|
-
#: pyfemtet/_message/messages.py:
|
|
340
|
+
#: pyfemtet/_message/messages.py:133
|
|
325
341
|
msgid "No history selected."
|
|
326
342
|
msgstr ""
|
|
327
343
|
|
|
328
|
-
#: pyfemtet/_message/messages.py:
|
|
344
|
+
#: pyfemtet/_message/messages.py:134
|
|
329
345
|
msgid "No FEM result (yet)."
|
|
330
346
|
msgstr ""
|
|
331
347
|
|
|
332
|
-
#: pyfemtet/_message/messages.py:
|
|
348
|
+
#: pyfemtet/_message/messages.py:135
|
|
333
349
|
msgid "Prediction model is not calculated yet."
|
|
334
350
|
msgstr ""
|
|
335
351
|
|
|
336
|
-
#: pyfemtet/_message/messages.py:
|
|
352
|
+
#: pyfemtet/_message/messages.py:136
|
|
337
353
|
msgid "Cannot select same parameter"
|
|
338
354
|
msgstr ""
|
|
339
355
|
|
|
340
|
-
#: pyfemtet/_message/messages.py:
|
|
356
|
+
#: pyfemtet/_message/messages.py:137
|
|
341
357
|
msgid "3D graph (two or more parameters required)"
|
|
342
358
|
msgstr ""
|
|
343
359
|
|
|
344
|
-
#: pyfemtet/_message/messages.py:
|
|
360
|
+
#: pyfemtet/_message/messages.py:139
|
|
345
361
|
msgid "Prediction Model of Objective"
|
|
346
362
|
msgstr ""
|
|
347
363
|
|
|
348
|
-
#: pyfemtet/_message/messages.py:
|
|
364
|
+
#: pyfemtet/_message/messages.py:140
|
|
349
365
|
msgid "prediction model"
|
|
350
366
|
msgstr ""
|
|
351
367
|
|
|
352
|
-
#: pyfemtet/_message/messages.py:
|
|
368
|
+
#: pyfemtet/_message/messages.py:141
|
|
353
369
|
msgid "std. dev. of model"
|
|
354
370
|
msgstr ""
|
|
355
371
|
|
|
356
|
-
#: pyfemtet/_message/messages.py:
|
|
372
|
+
#: pyfemtet/_message/messages.py:143
|
|
357
373
|
msgid "Progress"
|
|
358
374
|
msgstr ""
|
|
359
375
|
|
|
360
|
-
#: pyfemtet/_message/messages.py:
|
|
376
|
+
#: pyfemtet/_message/messages.py:144
|
|
361
377
|
msgid "Prediction"
|
|
362
378
|
msgstr ""
|
|
363
379
|
|
|
364
|
-
#: pyfemtet/_message/messages.py:
|
|
380
|
+
#: pyfemtet/_message/messages.py:145
|
|
365
381
|
msgid "Workers"
|
|
366
382
|
msgstr ""
|
|
367
383
|
|
|
368
|
-
#: pyfemtet/_message/messages.py:
|
|
384
|
+
#: pyfemtet/_message/messages.py:146
|
|
369
385
|
msgid "Details"
|
|
370
386
|
msgstr ""
|
|
371
387
|
|
|
372
|
-
#: pyfemtet/_message/messages.py:
|
|
388
|
+
#: pyfemtet/_message/messages.py:148
|
|
373
389
|
msgid "Optimization status will be shown here."
|
|
374
390
|
msgstr ""
|
|
375
391
|
|
|
376
|
-
#: pyfemtet/_message/messages.py:
|
|
392
|
+
#: pyfemtet/_message/messages.py:149
|
|
377
393
|
msgid "Auto-update graph"
|
|
378
394
|
msgstr ""
|
|
379
395
|
|
|
380
|
-
#: pyfemtet/_message/messages.py:
|
|
396
|
+
#: pyfemtet/_message/messages.py:150
|
|
381
397
|
msgid "Interrupt Optimization"
|
|
382
398
|
msgstr ""
|
|
383
399
|
|
|
384
|
-
#: pyfemtet/_message/messages.py:
|
|
400
|
+
#: pyfemtet/_message/messages.py:152
|
|
385
401
|
msgid "Result"
|
|
386
402
|
msgstr ""
|
|
387
403
|
|
|
388
|
-
#: pyfemtet/_message/messages.py:
|
|
404
|
+
#: pyfemtet/_message/messages.py:154
|
|
389
405
|
msgid "Open Result in Femtet"
|
|
390
406
|
msgstr ""
|
|
391
407
|
|
|
392
|
-
#: pyfemtet/_message/messages.py:
|
|
408
|
+
#: pyfemtet/_message/messages.py:155
|
|
393
409
|
msgid "Reconstruct Model"
|
|
394
410
|
msgstr ""
|
|
395
411
|
|
|
396
|
-
#: pyfemtet/_message/messages.py:
|
|
412
|
+
#: pyfemtet/_message/messages.py:156
|
|
397
413
|
msgid "Drag and drop or select csv file"
|
|
398
414
|
msgstr ""
|
|
399
415
|
|
|
400
|
-
#: pyfemtet/_message/messages.py:
|
|
416
|
+
#: pyfemtet/_message/messages.py:157
|
|
401
417
|
msgid "Connection to Femtet is not established. Launch Femtet and Open a project."
|
|
402
418
|
msgstr ""
|
|
403
419
|
|
|
404
|
-
#: pyfemtet/_message/messages.py:
|
|
420
|
+
#: pyfemtet/_message/messages.py:158
|
|
405
421
|
msgid "No result plot is selected."
|
|
406
422
|
msgstr ""
|
|
407
423
|
|
|
408
|
-
#: pyfemtet/_message/messages.py:
|
|
424
|
+
#: pyfemtet/_message/messages.py:159
|
|
409
425
|
msgid "The femprj file path in the history csv is not found or valid."
|
|
410
426
|
msgstr ""
|
|
411
427
|
|
|
412
|
-
#: pyfemtet/_message/messages.py:
|
|
428
|
+
#: pyfemtet/_message/messages.py:160
|
|
413
429
|
msgid "The model name in the history csv is not found."
|
|
414
430
|
msgstr ""
|
|
415
431
|
|
|
416
|
-
#: pyfemtet/_message/messages.py:
|
|
432
|
+
#: pyfemtet/_message/messages.py:161
|
|
417
433
|
msgid ".pdt file is not found. Please check the .Results folder. Note that .pdt file save mode depends on the `save_pdt` argument of FemtetInterface in optimization script(default to `all`)."
|
|
418
434
|
msgstr ""
|
|
419
435
|
|
|
420
|
-
#: pyfemtet/_message/messages.py:
|
|
436
|
+
#: pyfemtet/_message/messages.py:166
|
|
421
437
|
msgid "Failed to open "
|
|
422
438
|
msgstr ""
|
|
423
439
|
|
|
424
|
-
#: pyfemtet/_message/messages.py:
|
|
440
|
+
#: pyfemtet/_message/messages.py:167
|
|
425
441
|
msgid "Specified model is not in current project. Please check opened project. For example, not \"analysis model only\" but your .femprj file."
|
|
426
442
|
msgstr ""
|
|
427
443
|
|
|
428
|
-
#: pyfemtet/_message/messages.py:
|
|
444
|
+
#: pyfemtet/_message/messages.py:170
|
|
429
445
|
msgid ".femprj file path of the history csv is invalid. Please certify matching between csv and opening .femprj file."
|
|
430
446
|
msgstr ""
|
|
431
447
|
|
|
432
|
-
#: pyfemtet/_message/messages.py:
|
|
448
|
+
#: pyfemtet/_message/messages.py:171
|
|
433
449
|
msgid "Analysis model name of the history csv is invalid. Please certify matching between csv and opening analysis model."
|
|
434
450
|
msgstr ""
|
|
435
451
|
|
|
436
|
-
#: pyfemtet/_message/messages.py:
|
|
452
|
+
#: pyfemtet/_message/messages.py:172
|
|
437
453
|
msgid "Analysis model name of the history csv and opened in Femtet is inconsistent. Please certify matching between csv and opening analysis model."
|
|
438
454
|
msgstr ""
|
|
439
455
|
|
|
440
|
-
#: pyfemtet/_message/messages.py:
|
|
456
|
+
#: pyfemtet/_message/messages.py:173
|
|
441
457
|
msgid "tutorial mode"
|
|
442
458
|
msgstr ""
|
|
443
459
|
|
|
444
|
-
#: pyfemtet/_message/messages.py:
|
|
460
|
+
#: pyfemtet/_message/messages.py:174
|
|
445
461
|
msgid "Load Sample CSV"
|
|
446
462
|
msgstr ""
|
|
447
463
|
|
|
448
|
-
#: pyfemtet/_message/messages.py:
|
|
464
|
+
#: pyfemtet/_message/messages.py:175
|
|
449
465
|
msgid "Load CSV"
|
|
450
466
|
msgstr ""
|
|
451
467
|
|
|
452
|
-
#: pyfemtet/_message/messages.py:
|
|
468
|
+
#: pyfemtet/_message/messages.py:176
|
|
453
469
|
msgid "Open your optimization result. Then connecting to femtet will start automatically. Note that in tutorial mode, this button loads the ready-made sample csv and open sample femprj."
|
|
454
470
|
msgstr ""
|
|
455
471
|
|
|
456
|
-
#: pyfemtet/_message/messages.py:
|
|
472
|
+
#: pyfemtet/_message/messages.py:178
|
|
457
473
|
msgid "Main Graph"
|
|
458
474
|
msgstr ""
|
|
459
475
|
|
|
460
|
-
#: pyfemtet/_message/messages.py:
|
|
476
|
+
#: pyfemtet/_message/messages.py:179
|
|
461
477
|
msgid "Here the optimization history is shown. Each plot represents single FEM result. You can pick a result to open the corresponding result in Femtet. "
|
|
462
478
|
msgstr ""
|
|
463
479
|
|
|
464
|
-
#: pyfemtet/_message/messages.py:
|
|
480
|
+
#: pyfemtet/_message/messages.py:182
|
|
465
481
|
msgid "Open Result"
|
|
466
482
|
msgstr ""
|
|
467
483
|
|
|
468
|
-
#: pyfemtet/_message/messages.py:
|
|
484
|
+
#: pyfemtet/_message/messages.py:183
|
|
469
485
|
msgid "After pick a point in the main graph, This button shows the corresponding FEM result in Femtet."
|
|
470
486
|
msgstr ""
|
|
471
487
|
|
|
472
|
-
#: pyfemtet/_message/messages.py:
|
|
488
|
+
#: pyfemtet/_message/messages.py:185
|
|
473
489
|
msgid "Re-connect to Femtet."
|
|
474
490
|
msgstr ""
|
|
475
491
|
|
|
476
|
-
#: pyfemtet/_message/messages.py:
|
|
492
|
+
#: pyfemtet/_message/messages.py:186
|
|
477
493
|
msgid "Sample csv is not found. Please consider to re-install pyfemtet by `py -m pip install pyfemtet -U --force-reinstall`"
|
|
478
494
|
msgstr ""
|
|
479
495
|
|
|
480
|
-
#: pyfemtet/_message/messages.py:
|
|
496
|
+
#: pyfemtet/_message/messages.py:187
|
|
481
497
|
msgid "Sample femprj file is not found. Please consider to re-install pyfemtet by `py -m pip install pyfemtet -U --force-reinstall`"
|
|
482
498
|
msgstr ""
|
|
483
499
|
|
|
484
|
-
#: pyfemtet/_message/messages.py:
|
|
500
|
+
#: pyfemtet/_message/messages.py:188
|
|
485
501
|
msgid "Sample femprj result folder is not found. Please consider to re-install pyfemtet by `py -m pip install pyfemtet -U --force-reinstall`"
|
|
486
502
|
msgstr ""
|
|
487
503
|
|
|
488
|
-
#: pyfemtet/_message/messages.py:
|
|
504
|
+
#: pyfemtet/_message/messages.py:190
|
|
489
505
|
msgid "Loading data..."
|
|
490
506
|
msgstr ""
|
|
491
507
|
|
|
492
|
-
#: pyfemtet/_message/messages.py:
|
|
508
|
+
#: pyfemtet/_message/messages.py:191
|
|
493
509
|
msgid "Plots of objectives versus trials"
|
|
494
510
|
msgstr ""
|
|
495
511
|
|
|
496
|
-
#: pyfemtet/_message/messages.py:
|
|
512
|
+
#: pyfemtet/_message/messages.py:192
|
|
497
513
|
msgid "The vertical axis is the objective, and the horizontal axis is the number of trials."
|
|
498
514
|
msgstr ""
|
|
499
515
|
|
|
500
|
-
#: pyfemtet/_message/messages.py:
|
|
516
|
+
#: pyfemtet/_message/messages.py:193
|
|
501
517
|
msgid "Parallel coordinate plots"
|
|
502
518
|
msgstr ""
|
|
503
519
|
|
|
504
|
-
#: pyfemtet/_message/messages.py:
|
|
520
|
+
#: pyfemtet/_message/messages.py:194
|
|
505
521
|
msgid "The vertical axis is an objective or parameters, and one polyline indicates one result."
|
|
506
522
|
msgstr ""
|
|
507
523
|
|
|
508
|
-
#: pyfemtet/_message/messages.py:
|
|
524
|
+
#: pyfemtet/_message/messages.py:195
|
|
509
525
|
msgid "The heatmap of objectives"
|
|
510
526
|
msgstr ""
|
|
511
527
|
|
|
512
|
-
#: pyfemtet/_message/messages.py:
|
|
528
|
+
#: pyfemtet/_message/messages.py:196
|
|
513
529
|
msgid "The axes are parameters, and the color shows objective value."
|
|
514
530
|
msgstr ""
|
|
515
531
|
|
|
516
|
-
#: pyfemtet/_message/messages.py:
|
|
532
|
+
#: pyfemtet/_message/messages.py:197
|
|
517
533
|
msgid "The response of an objective versus one parameter"
|
|
518
534
|
msgstr ""
|
|
519
535
|
|
|
520
|
-
#: pyfemtet/_message/messages.py:
|
|
536
|
+
#: pyfemtet/_message/messages.py:198
|
|
521
537
|
msgid "The vertical axis is objective, and the horizontal axis is parameter."
|
|
522
538
|
msgstr ""
|
|
523
539
|
|
pyfemtet/_message/messages.py
CHANGED
|
@@ -81,6 +81,10 @@ class Message:
|
|
|
81
81
|
ERR_FAILED_TO_SAVE_JPG = _('Failed to save screenshot (.jpg).')
|
|
82
82
|
ERR_JPG_NOT_FOUND = _('Screenshot (.jpg) is not found.')
|
|
83
83
|
ERR_UPDATE_SOLIDWORKS_MODEL_FAILED = _('Failed to update model in solidworks.')
|
|
84
|
+
INFO_POF_IS_LESS_THAN_THRESHOLD = _('Probability of feasibility is less than threshold.')
|
|
85
|
+
INFO_TERMINATING_EXCEL = _('Terminating Excel process...')
|
|
86
|
+
INFO_TERMINATED_EXCEL = _('Excel process is terminated.')
|
|
87
|
+
INFO_RESTORING_FEMTET_AUTOSAVE = _('Restore Femtet setting of autosave.')
|
|
84
88
|
|
|
85
89
|
# ===== pyfemtet.opt.optimizer =====
|
|
86
90
|
ERR_NOT_IMPLEMENTED = _('The following features are not supported by the specified optimization method. ')
|
|
@@ -112,9 +116,9 @@ class Message:
|
|
|
112
116
|
GRAPH_TITLE_HYPERVOLUME = _('Hypervolume Plot')
|
|
113
117
|
GRAPH_TITLE_SINGLE_OBJECTIVE = _('Objective Plot')
|
|
114
118
|
GRAPH_TITLE_MULTI_OBJECTIVE = _('Multi Objective Pair Plot')
|
|
115
|
-
GRAPH_AXIS_LABEL_TRIAL = _('trial number')
|
|
119
|
+
GRAPH_AXIS_LABEL_TRIAL = _('Succeeded trial number')
|
|
116
120
|
LEGEND_LABEL_ALL_SOLUTIONS = _('All solutions')
|
|
117
|
-
LEGEND_LABEL_OPTIMAL_SOLUTIONS = _('Transition of
|
|
121
|
+
LEGEND_LABEL_OPTIMAL_SOLUTIONS = _('Transition of<br>optimal solutions')
|
|
118
122
|
LEGEND_LABEL_OBJECTIVE_TARGET = _('Target value')
|
|
119
123
|
# main_graph.py
|
|
120
124
|
TAB_LABEL_OBJECTIVE_PLOT = _('Objectives')
|
|
@@ -5,16 +5,27 @@ import asyncio # for timeout
|
|
|
5
5
|
import win32gui
|
|
6
6
|
import win32con
|
|
7
7
|
import win32api
|
|
8
|
+
import win32process
|
|
8
9
|
|
|
9
10
|
from pyfemtet.logger import get_module_logger
|
|
10
11
|
|
|
11
12
|
logger = get_module_logger('util.excel', __name__)
|
|
12
13
|
|
|
13
14
|
|
|
15
|
+
def _get_pid(hwnd):
|
|
16
|
+
"""Window handle から process ID を取得します."""
|
|
17
|
+
if hwnd > 0:
|
|
18
|
+
_, pid = win32process.GetWindowThreadProcessId(hwnd)
|
|
19
|
+
else:
|
|
20
|
+
pid = 0
|
|
21
|
+
return pid
|
|
22
|
+
|
|
23
|
+
|
|
14
24
|
class _ExcelDialogProcessor:
|
|
15
25
|
|
|
16
26
|
def __init__(self, excel_, timeout, restore_book=True):
|
|
17
27
|
self.excel = excel_
|
|
28
|
+
self.excel_pid = _get_pid(excel_.hWnd)
|
|
18
29
|
self.__excel_window_title = f' - Excel' # {basename} - Excel
|
|
19
30
|
self.__error_dialog_title = 'Microsoft Visual Basic'
|
|
20
31
|
self.__vbe_window_title = f'Microsoft Visual Basic for Applications - ' # Microsoft Visual Basic for Applications - {basename}
|
|
@@ -42,6 +53,7 @@ class _ExcelDialogProcessor:
|
|
|
42
53
|
win32gui.EnumWindows(self.enum_callback_to_close_dialog, found)
|
|
43
54
|
await asyncio.sleep(0.5)
|
|
44
55
|
if any(found):
|
|
56
|
+
await asyncio.sleep(1.)
|
|
45
57
|
break
|
|
46
58
|
|
|
47
59
|
logger.debug('ブックを閉じます。')
|
|
@@ -56,7 +68,7 @@ class _ExcelDialogProcessor:
|
|
|
56
68
|
def enum_callback_to_activate(self, hwnd, _):
|
|
57
69
|
title = win32gui.GetWindowText(hwnd)
|
|
58
70
|
# Excel 本体
|
|
59
|
-
if self.__excel_window_title in title:
|
|
71
|
+
if (self.excel_pid == _get_pid(hwnd)) and (self.__excel_window_title in title):
|
|
60
72
|
# Visible == True の際、エラーが発生した際、
|
|
61
73
|
# 一度 Excel ウィンドウをアクティブ化しないと dialog が出てこない
|
|
62
74
|
# が、これだけではダメかも。
|
|
@@ -65,7 +77,7 @@ class _ExcelDialogProcessor:
|
|
|
65
77
|
def enum_callback_to_close_dialog(self, hwnd, found):
|
|
66
78
|
title = win32gui.GetWindowText(hwnd)
|
|
67
79
|
# エラーダイアログ
|
|
68
|
-
if self.__error_dialog_title == title:
|
|
80
|
+
if (self.excel_pid == _get_pid(hwnd)) and (self.__error_dialog_title == title):
|
|
69
81
|
# 何故かこのコマンド以外受け付けず、
|
|
70
82
|
# このコマンドで問答無用でデバッグモードに入る
|
|
71
83
|
logger.debug('エラーダイアログを見つけました。')
|
|
@@ -77,14 +89,14 @@ class _ExcelDialogProcessor:
|
|
|
77
89
|
def enum_callback_to_close_confirm_dialog(self, hwnd, _):
|
|
78
90
|
title = win32gui.GetWindowText(hwnd)
|
|
79
91
|
# 確認ダイアログ
|
|
80
|
-
if "Microsoft Excel" in title:
|
|
92
|
+
if (self.excel_pid == _get_pid(hwnd)) and ("Microsoft Excel" in title):
|
|
81
93
|
# DisplayAlerts が False の場合は不要
|
|
82
94
|
win32gui.SendMessage(hwnd, win32con.WM_SYSCOMMAND, win32con.SC_CLOSE, 0)
|
|
83
95
|
|
|
84
96
|
def enum_callback_to_close_book(self, hwnd, _):
|
|
85
97
|
title = win32gui.GetWindowText(hwnd)
|
|
86
98
|
# VBE
|
|
87
|
-
if self.__vbe_window_title in title:
|
|
99
|
+
if (self.excel_pid == _get_pid(hwnd)) and (self.__vbe_window_title in title):
|
|
88
100
|
# 何故かこれで book 本体が閉じる
|
|
89
101
|
win32gui.SendMessage(hwnd, win32con.WM_CLOSE, 0, 0)
|
|
90
102
|
|