# -*- coding: utf-8 -*-
__author__ = 'TUMCIVIL'
__version__ = '2.0.0'
__title__ = ' Cleaning Data Level Columns'
__doc__ = """Created by : TUMCIVIL TEAM
Version : 2.0.0 
Update : วันที่ 03-03-2025
_________________________________________________________________
รายการ :
ลบค่าระดับโค่นเสา,ยอดเสาและตำแหน่งทั้งหมดของ Parameter(Base EL 
Column,Top EL Column และ Location) ใน Model
_________________________________________________________________
ข้อจำกัดการใช้งาน :
1.ไม่สามารถใช้กับเสาที่ Slope ได้
2.ไม่สามารถใช้กับเสาที่สร้างจาก Model In-Place ได้
3.เมื่อใช้คำสั่ง Cleaning Data Columns แล้ว ค่าระดับโค่นเสา,ยอดเสา และ 
    ตำแหน่งของเสา (Location) จะถูกลบข้อมูลออกจาก Parameter ใน
    Properties ในหัวข้อ Other เมื่อเลือกเสาใดๆ

         
_________________________________________________________________
วิธีการใช้ :
1.ไม่มี


 """
# for timing -------------------------------------------------------------------
import pyrevit.coreutils as cor
from pyrevit.coreutils import Timer
timer = Timer()
# ------------------------------------------------------------------------------
import sys
import csv
import codecs
import os.path as op
from collections import defaultdict

from pyrevit import PyRevitException
from pyrevit import forms
from pyrevit import coreutils
from pyrevit import revit, DB, HOST_APP
from pyrevit import script
import Autodesk
from Autodesk.Revit.DB import *
from Autodesk.Revit.UI import *
import Autodesk.Revit.DB as DB
from Autodesk.Revit.DB.Structure import *
import re

doc = __revit__.ActiveUIDocument.Document
uidoc = __revit__.ActiveUIDocument




def columns():
    columns = DB.FilteredElementCollector(doc).OfCategory(DB.BuiltInCategory.OST_StructuralColumns) \
        .WhereElementIsNotElementType() \
        .ToElements()
    q1 = ""
    q2 = ""
    q3 = ""
    q4 = ""
    q5 = ""
    q6 = 0
    q7 = ""
    q8 = ""
    q9 = ""
    for e in columns:
        
        # q10 = e.LookupParameter("Top of Column").AsString()
        # q11 = e.LookupParameter("Bottom of Column").AsString()
        # print("q10 = {}".format(q10))
        # print("q11 = {}".format(q11))
        t = Transaction(doc, 'change parameter')
        t.Start()
        try:
            e.LookupParameter("Location").Set(q1)
            e.LookupParameter("Name Column").Set(q2)
            e.LookupParameter("Size").Set(q3)
            e.LookupParameter("Group").Set(q4)
            e.LookupParameter("Strength Concrete").Set(q5)
            e.LookupParameter("3-HR Fireproofing (or not)").Set(q6)
            e.LookupParameter("3-HR Fireproofing Name").Set(q7)
            # e.LookupParameter("Bottom of Column").Set(q8)
            # e.LookupParameter("Top of Column").Set(q9)

        except:
            # TaskDialog.Show('error', 'error message')
            pass
        try:
            e.LookupParameter("Base EL Column").Set(q8)  # ตั้งค่า Base Level
        except:
            pass
        try:
            e.LookupParameter("Top EL Column").Set(q9)  # ตั้งค่า Top Level
        except:
            pass
        try:
            e.LookupParameter("Size").Set(q3)
        except:
            pass
        try:
            e.LookupParameter("Group").Set(q4)
        except:
            pass
        try:
            e.LookupParameter("Strength Concrete").Set(q5)
        except:
            pass
        try:
            e.LookupParameter("3-HR Fireproofing (or not)").Set(q6)
        except:
            pass
        try:
            e.LookupParameter("3-HR Fireproofing Name").Set(q7)
        except:
            pass

        t.Commit()


if __name__ == "__main__":
    columns()

# for timing -------------------------------------------------------------------
print("====" * 20)
print("CLEANING DATA COLUMNS COMPLETELY !")
endtime = timer.get_time()
print("Time been used = {} sec.".format(endtime))
currentDate = cor.current_date()
currentTime = cor.current_time()
print ("Date : {} ; {}".format(currentDate,currentTime))
print ("Credited by : {}".format(__author__))
print("====" * 20)
# ------------------------------------------------------------------------------