Chuyển đến nội dung
Diễn đàn CADViet

TRUNGNGAMY

Thành viên
  • Số lượng nội dung

    410
  • Đã tham gia

  • Lần ghé thăm cuối

  • Ngày trúng

    2

Bài đăng được đăng bởi TRUNGNGAMY


  1. Chào các bạn. Mình có cái này chưa xử lý được mong nhờ các bạn giúp đỡ.

    Mình có 1 danh sách bất kỳ, VD (("11" "12" "13" "14") ("21" "22" "23" "24") ("31" "32" "33" "34")). nó giống như ma trận 3 hàng 4 cột

    Mình muốn tạo một danh sách mới từ danh sách đã có trên nhưng theo mô tả (mẫu) của một list bất kỳ mà phần từ của nó chỉ là hiển thị chỉ số cột của danh sách trên

    Vi dụ:

    với mẫu (1 2) sẽ trả về (("11" "12") ("21" "22") ("31" "32")).

    với mẫu ((1 2) 3) sẽ trả về ((("11" "12") "13") (("21" "22") "23) (("31" "32") "33"))

    với mẫu (1 (2 (3 4))) sẽ trả về (("11" ("12" ("13" "14"))) ("21" ("22" ("23" "24"))) ("31" ("32" ("33" "34"))))

    Không biết mình diễn đạt như vậy đã rõ ràng chưa. Mong các bạn giúp đỡ.

    Cám ơn các bạn nhiều


  2. Có khi trong cad đánh lệnh "select " "p" "enter" mình sẽ thấy các đối tượng đã chọn trước đó "hiện hình" nhưng trong lisp mình 0 làm được.

    Làm ơn các bạn chỉ giúp cách viết 1 lệnh lisp cho hiện lên các đối tượng vừa chọn trước đó

    (câu hỏi này trước dây mình thấy đâu đó nhưng quên mất tìm lại không được).

    Cám ơn các bạn.


  3. Mình tính hỏi các bạn cái này nhưng không biết để đâu cho tiện, đành để ở đây, nếu không đúng xin thứ lỗi.

    Mình có câu lệnh lisp như sau:

    (command "_.insert" "M_XY_KV" p 1 "" 0 "1")

    Đây là lệnh chèn block "M_XY_KV" có thuộc tính "1" tại vị trí p.

    Nếu thực hiện từ cad2013 về trước thấy vẫn bình thường,

    nhưng khi làm trên cad2017 nó lại hiện lên khung đối thoại để nhập.

    Vậy làm sao cho nó nhận trị "sohieu" như cad 2013 được mà không cần hiện hộp thoại.

    Nhờ các bạn chỉ giúp. Cám ơn các bạn

    M_XY_KV.dwg


  4. Tính chuyển qua win64 để tận dụng ưu thế bộ nhới nhưng khó thật.

    Trên delphi chuyển cực nhanh nhưng trên Arx thì khó hơn. Nó không tự động chuyển các thông số bên trong, đã vậy một số kiểu dữ liệu thay đổi thế nào đó rất khác.

    Một số hàm đã viết trên win32 qua win64 báo lỗi tùm lum. Mình cũng chưa chuyển được. Bạn nào có kinh nghiệm hay có công cụ thì xin chỉ điểm giúp. Cám ơn các bạn


  5. Các bạn thên mến. Có một vấn đề nhờ các bạn trợ giúp.

    Mình có phát triển ARX trên win32, giờ muốn chuyển sang win64 thì làm thế nào.

    Mình vốn dân nghiệp dư nên không rành lắm, mong các bạn giúp đỡ (thật ra mình cũng có làm thử nhưng chưa được).

     

    Nhân đây cho mình hỏi thêm. Có bạn nào biết phiên bản delphi nào có thể tạo library (tức file *.dll) trên win64.

    Mình thử bản delphi 10.2.3 (bản 2010) thì nó chỉ tạo được chương trình trên win64, còn library chỉ được trên win32. 

    (Mình hỏi vậy vì trên arx mình có liên kết với dll trên delphi)

    Cám ơn các bạn.


  6. Mình muốn hỏi các bạn một tý.

    Vốn là trong lisp mình có dùng lệnh CAL. Nếu không load trước file chứa lệnh này nó sẽ báo không biết lệnh.

    Ví dụ ngày xưa dùng cad2002 mình làm thế này chạy tốt

     

    (if (and (null (type cal)) (findfile "geomcal.arx")) (arxload (findfile "geomcal.arx")))

     

    Nhưng khi lên cad2013 nó dấu lệnh cal ở đâu không rõ. Các bạn có thể chỉ cho mình cách load lệnh này một cách nhanh gọn nhẹ nhé.

    Cám ơn các bạn nhiều


  7. Mình có một loạt các file được tạo từ CT của mình bằng cách dùng lệnh wblock để ghi một số đối tượng ra file khác thì cái file được ghi ra không CopyClipboard được (cái file này nếu insert vào file trắng sau đó explode ra thì CopyClipboard được). Trong khi cái file gốc vẫn CopyClipboard bình thường. Trước đây mình vẫn hay làm việc này trên các file gốc khác thì cái file tạo ra vẫn bình thường. Mình chẳng hiểu tại sao. Bạn nào biết xin chỉ giúp (CT của mình có dùng dữ liệu mở rộng XDATA). Cám ơn các bạn

    http://www.cadviet.com/upfiles/5/37170_filethu.dwg

    Không biết có bạn nào xem qua và xử lý được vđ này kg. Chẳng lẽ cứ phải làm cái việc new file, ínert, explode, purge cho hàng trăm file


  8. Khi chuyển từ dgn qua dwg, các font thường bị qui về standard hay txt và font name cũng bị thay đổi thường là txt.

    Nếu chỉ để xem bạn chỉ cần chọn từng font rồi đổi qua font ABC là được. Ví dụ: ở box styles chọn "stanndard" và ở font name chọn ".Vnarial Narow". Sau đó regen là được.

    Trường hợp bạn muốn nhìn giống như trên dgn bạn cần tham khảo qui phạm địa chính rồi chuyển từng loại text qua font tương ứng


  9. Em có file cad về bàn đồ địa chính, máy tải rất nhiều font rồi nhưng ko biết fonts chữ dùng cho bản vẽ này là gì. Bấm F2 thì ko thấy báo thông báo lỗi font nào. Nhờ các bác giúp em font của loại này. E là xây dựng nên món về font của địa chính này em ko biết.

    http://www.cadviet.com/upfiles/5/110886_cad.dwg

    Cảm ơn bác các đã xem giúp.

    BĐĐC thường dùng font ABC bạn ạ. Sau này dùng unicode nhưng bản đồ của bạn là ABC


  10. Mình có một loạt các file được tạo từ CT của mình bằng cách dùng lệnh wblock để ghi một số đối tượng ra file khác thì cái file được ghi ra không CopyClipboard được (cái file này nếu insert vào file trắng sau đó explode ra thì CopyClipboard được). Trong khi cái file gốc vẫn CopyClipboard bình thường. Trước đây mình vẫn hay làm việc này trên các file gốc khác thì cái file tạo ra vẫn bình thường. Mình chẳng hiểu tại sao. Bạn nào biết xin chỉ giúp (CT của mình có dùng dữ liệu mở rộng XDATA). Cám ơn các bạn

    http://www.cadviet.com/upfiles/5/37170_filethu.dwg


  11.  

    Bạn từng là thành viên của nhóm CADMagic à? Nó nằm trong lệnh fakedim của mình chia sẻ trong nhóm CADMagic chứ chưa có chia sẻ lên Cadviet.

     

    Bạn TRUNGNGAMY: bạn tải code này nhé, mình viết nó để đếm dữ đối tượng tạo ra trong bản vẽ theo handle

    (defun handent-next (hex / lt id str)
     (setq str (vl-string-right-trim "F" hex) id (strlen str))
     (setq lt '(("0" . "1") ("1" . "2") ("2" . "3") ("3" . "4")
                ("4" . "5") ("5" . "6") ("6" . "7") ("7" . "8")
                ("8" . "9") ("9" . "A") ("A" . "B") ("B" . "C")
                ("C" . "D") ("D" . "E") ("E" . "F")))
     (cond ((= str "") (substr "1000000" 1 (1+ (strlen hex))))
           ((= str hex) (strcat (substr str 1 (1- id)) (cdr (assoc (substr str id) lt))))
           (t (strcat (substr str 1 (1- id)) (cdr (assoc (substr str id) lt)) (substr "000000" 1 (- (strlen hex) id))))))
    

    Mấy hôm nay có việc đi xa nên kg vào CV. Cám ơn bạn đã giúp. Nhưng đó là hàm tăng, bạn viết nốt giúp hàm giảm nhé. Mình dùng để đi tới đi lui các đối tượng của cad và kiểm soát xem các đối tượng đang quan tâm có cái nào bị xoá kg

    Một lần nữa cám ơn bạn.


  12. Ở đây có các hàm tổng quát để đổi từ hexa sang decimal và ngược lại:

    https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/decimal-to-hexadecimal/td-p/2873916

    Tuy nhiên, tôi đã đọc 1 bài của ThuyLinh313 có thuật toán rất hay để tăng hay giảm 1 đơn vị trong hệ 16, bạn search hay hỏi bạn ấy xem

    Hy vọng bạn ấy vào đây hay các bạn khác sẽ thấy và giúp mình


  13. Cám ơn Tue.

    - TH pline này nằm trong pline kia mình kg đặt ra vì kết quả biết ngay giao của 2 pl sẽ là pl nhỏ hơn, nếu thực hiện chọn pl bằng tay thì kg bị TH này. Tuy nhiên, khi chạy CT trên bản vẽ có nhiều pl thì nếu mình kg loại nó ra đc thì CT bị lỗi. Vần đề này mình cũng đã giải quyết đc bằng các lấy toạ độ đường bao của pl1 sau đó chọn với 2 cách lọc khác nhau là (ssget "cp") và (ssget "wp").

    - TH khi có ít nhất 1 pl bị trùng đỉnh, tức tồn tại (equal pi pj) ->T, với i, j là 2 đỉnh bất kỳ trên pl thì CT sẽ bị lỗi. Mình có gởi file rồi (cad 2014). Trước giờ mình toàn sài cad2002, sau đó code của bác chỉ chạy từ cad2013 trở lên nên mình sài cad2013 luôn. http://www.cadviet.com/upfiles/4/37170_vd6_3.dwg


  14. Chào bác Tue_NV và các bạn.

    Code của bác Tue đang chạy ngon bỗng nhiên báo lỗi khi gặp 1 pl bị trùng đỉnh, tức là có 2 đỉnh trùng vào nhau. Nó 2 trường hợp.

    - 1 là đỉnh trùng chung cạnh, TH này mình tìm code xoá đỉnh pl trên CV làm được rồi.

    - 2 là TH 2 đỉnh khác cạnh nhau, lúc này pl tạo thành 2 tứ giác. Mình dự tính giải quyết vd này bằng 1 trong 2 cách:

        + 1 là dời 1 trong 2 đỉnh trùng này đi 1 tý (khoảng 0.020m - BV mình đơn vị m), tức cho nó hở ra

        + 2 là cắt cái pl đó thành 2 pl khác nhau.

    Tuy nhiên, cả 2 TH này kiến thức của mình chưa đủ để viết (tự tìm ra vị trí trùng và xử lý), mong các bạn hỗ trợ viết giúp hay chỉ dẫn giúp.

    Cám ơn các bạn.http://www.cadviet.com/upfiles/4/37170_vd6_2.dwg


  15. Trước đây mình ít phải đụng tới hatch, nay mới cần. Có 1 số hatch kg hiểu sao kg có diện tích, mình kg rõ nguyên nhân, mỗi lần đề cập tới có bạn lại nói đén non-Associative thì chịu, làm mình cứ nghĩ việc thiếu đg bao làm "mất" diện tích, thì ra kg phải như vậy. Cám ơn, do mình mất tập trung làm mất thời gian bạn.


  16. Thế thì lên đời tí:

    (vlax-get-property (vlax-ename->vla-object (car (entsel))) 'AssociativeHatch)

    :vlax-true nếu Associative

    :vlax-false nếu non-Associative

    Vẫn vậy bác ơi. Cả 2 TH đều tra về vlax-false nhưng trong đó 1 cái có diện tích: http://www.cadviet.com/upfiles/4/37170_vd5_1.dwg

    :vlax-false là trị kiểu gì vậy bác. Nếu muốn từ nó trả về  T hay nil thì làm sao


  17. Với code trên, lỗi chỉ xảy ra khi user pick trượt đối tượng.

    Xin lỗi các bạn, mình nhầm. Đúng như gia_bach nói. Cám ơn bác

    Nhưng code trên chạy khá lâu các bác ạ. Mình chọn 1 đối tượng khá là lớn nhiều point thì sau hơn 1 phút mới có kq. Có code nào chạy nhanh hơn chỉ cần trả về T hay nil kg cần tính kg các bác nhỉ

×